http://www.grocerycrud.com/より抜粋 |
エラーチェックをしていなかったりなどそのまま使うには不完全なところもありますので、適宜付け加えて使ってみてください。
Codeigniter とは、アメリカの EllisLab によって開発された PHP のフレームワークです。
低い学習コストと圧倒的な速さから4大フレームワークの1つに数えられることもある大変人気のあるフレームワークの1つです。
そんなCodeIgniterですが、シンプルであるがゆえに単純なデータベースのCRUDを実装するにもコード量が多くなってしまうという欠点があります。
そこでGrocery CRUDというライブラリを使うことで半自動的にCRUD画面を作成し、その欠点を補ってくれるので便利なのですが、一気に大量のデータを削除したいときに一括削除の機能がなかったため、追加してみました。
Grocery CRUDの基本的な使い方はこちらに分かりやすく説明されています。
※このブログではCodeigniter 3.0.6、grocery CRUD 1.5.2で検証しています。
6. 各行にチェックボックスを表示するため38行目あたりに下記追加
7. 検索窓のカラムをチェックボックスに合わせて増やすため、84行目あたり、tfootの行の先頭に下記追加(非表示のINPUTタグ)
はじめに
Codeigniter とは、アメリカの EllisLab によって開発された PHP のフレームワークです。
低い学習コストと圧倒的な速さから4大フレームワークの1つに数えられることもある大変人気のあるフレームワークの1つです。
そんなCodeIgniterですが、シンプルであるがゆえに単純なデータベースのCRUDを実装するにもコード量が多くなってしまうという欠点があります。
そこでGrocery CRUDというライブラリを使うことで半自動的にCRUD画面を作成し、その欠点を補ってくれるので便利なのですが、一気に大量のデータを削除したいときに一括削除の機能がなかったため、追加してみました。
Grocery CRUDの基本的な使い方はこちらに分かりやすく説明されています。
選択一括削除機能の追加
1. こちらの公式ドキュメントを用意し、Grocery CRUDを用いて基本的なCRUD画面を作成する※このブログではCodeigniter 3.0.6、grocery CRUD 1.5.2で検証しています。
2. Examplesコントローラ(Examples.php)に受け取ったデータを削除するメソッドを追加
function delete_selection() { $id_array = array(); $selection = $this->input->post("selection"); $primary_key = $this->input->post("primary_key"); $table_name = $this->input->post("table_name"); $id_array = explode("|", $selection); $delete_flag = false; $deleteNum = 0; $errorMessage = ''; foreach ($id_array as $item) { if ($item != '' && $item != 'on') { //1行ずつ削除 $this->db->where($primary_key, $item); $mes = $this->db->delete($table_name); if (!$mes) { $errorMessage .= $this->db->error()['message'] . "\n"; } } } }
3. application/libraries/Grocery_CRUD.phpの1557行目にテーブル名をビューに渡すための変数追加
$data->table_name = $this->get_table();
4. assets/grocery_crud/themes/datatables/views/list.php最上部にチェックボックスのチェック状態を取得し削除メソッドを呼び出すためのJavascriptを追加
5. 見出し行のカラムをチェックボックスに合わせて増やすため、27行目当たり、theadの先頭に下記追加
<script type="text/javascript"> function delete_selected() { var list = ""; $('input[type=checkbox]').each(function() { if (this.checked) { //remove selection rows $('#custom_tr_'+this.value).remove(); //create list of values that will be parsed to controller list += this.value + '|'; } }); alert('一括削除します'); //send data to delete $.post('<?php echo site_url('masters/delete_selection'); ?>', {selection: list, primary_key: '<?= $primary_key ?>', table_name: '<?= $table_name ?>'}, function (data) { alert(data); location.reload(); }); } </script>
5. 見出し行のカラムをチェックボックスに合わせて増やすため、27行目当たり、theadの先頭に下記追加
<th width="20px"><th>
6. 各行にチェックボックスを表示するため38行目あたりに下記追加
<td><input type="checkbox" name="custom_delete" value="<?= primary_key_value?>" />
7. 検索窓のカラムをチェックボックスに合わせて増やすため、84行目あたり、tfootの行の先頭に下記追加(非表示のINPUTタグ)
<th><input type="text" style="display:none;"></th>
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿