プログラミングVP初級で学んだこと2
GeekGirlLaboのプログラミングVPで学んだことをまとめる。
cakePHP2。
配列をデータベースに保存する方法。
JSON形式に変換してデータベースに保存する。
PHPではjson_encode(値)で値をJSON形式に変換できる。
JSON形式の値をPHPの変数に変換するにはjson_decode(値)を使う。
json_decode(値,true)にすると連想配列形式になる。
json_decode(値,false)にするとobjectになる。
PHPでシリアル化して保存する方法もあるが、データを検証して改竄がないか確認する必要がある。
JSONが安全かつ標準のフォーマット。
連想配列とobjectでは値の呼び出し方が異なる。
連想配列はkeyを指定して呼び出す。
$array['key']
objectはnewでインスタンス化してからプロパティを指定して呼び出す。
$object1 = new object;
$object->プロパティ
debugやvar_dumpでどっちなのか確認すると良い。
こんな感じの表で、「チェックしたものを削除」欄のチェックボックスにチェックを入れたデータのみを「チェックしたものを削除」ボタンクリック時に削除する方法。
削除する前には「本当に削除しますか?」というアラートを表示する。
「削除」欄の削除はクリックした削除ボタンと同じ行のデータ単体を削除する。
アラートの出し方。
<?php echo $this->Form->create('モデル名',array(
'action' => 'アクション名',
'onsubmit' => 'return confirm("本当に削除してもいいですか?");'));?>
onsubmitを指定すると、submitした時にアラートを表示することができる。
単体で削除する場合。
postLinkで各データのidの情報をpost送信し、送信されてきたidを持つデータをdeleteで削除する。
「チェックしたものを削除」で複数削除する場合。
チェックボックスのvalueには各データのidの情報を持たせる。
複数選択できるチェックボックスは配列形式でidの情報がpost送信されるので、送信されてきたidを持つデータをdeleteAllで全て削除する。
チェックボックスには自動でid(HTMLのタグに設定できる属性のidのこと)が付く。id名を指定しないと全てのチェックボックスが同じid名になってしまうので、checkbox1、checkbox2みたいになるように設定しておく。
HTMLのidは同じ名前を付けることは出来ないので注意する。
フォームの中にpostLinkを作成する場合。
postLink自体がformを生成するのでformの中に入れることはできない。
<?php echo $this->Form->end();?>
<?php echo $this->fetch('postLink'); ?>
よって、formを閉じた後にfetch('postLink')でpostLinkを表示する。
fetchは()内のものを出力してくれる。
こうすることで、見た目的にはformの中(=表の中)にpostLinkが表示されているが、コード的にはformが閉じた後にpostLinkがずらーっと並んでいる状態になる。
表全体を1つのformとして考える必要があるので、formの開始はtableタグの上に書かなければならない。
formの中にinputやsubmitが存在するという基本を忘れないようにする。
この記事が気に入ったらサポートをしてみませんか?