T5-ブロックインスタンスの削除

前項までで作成したプラグインは、ページを編集状態にすると以下のような表示になる。

maharapg-t4-20170903-091742.png

ゴミ箱のアイコンをクリックするとブロックインスタンスが削除されるはずだが、実際に押してみるとエラーメッセージがでて削除できない。

maharapg-t5-20170903-093253.png

これは、アクセス履歴を残しているテーブル blocktype_simpleclock_visit が、削除しようとしたブロックインスタンスのデータ (テーブル block_instance にある) を外部キーとして参照しているからである。削除にさきだち、blocktype_simpleclock_visit の該当レコードを削除しておかなくてはならない。

このように、ブロックインスタンス削除時になにか作業をしておく必要があるときは、delete_instance メソッドを定義し、その中に記述する。

delete_instance

public static function delete_instance(BlockInstance $instance) {
  delete_records('blocktype_simpleclock_visit', 'blockinstance', $instance->get('id'));
}

delete_records 関数は、テーブルから条件に合う行を削除する。一つ目の変数に指定したテーブルから、二つ目の変数に指定したフィールドの値が三つ目の引数と同じになるようなレコードを削除する。

これで削除できるようなった。


ここまでのファイル: filesimpleclock-v2-t5.zip


添付ファイル: filesimpleclock-v2-t5.zip 3件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-09-04 (月) 03:47:55 (19d)