Formの便利な使い方
開発環境:CakePHP2.5.1
問い合わせフォームや会員機能など、WEBサイトを作る際に必ず必要になるフォームですが、様々な便利機能があります。
Formのaccept-charsetを変更
フォームは基本的にapp/Config/core.phpで指定してあるApp.encodingの文字コードが設定されます。
これを一時的に別の文字コードに変更するには次のようにencodingを指定します。
1 |
<?php echo $this->Form->create('Contact', array('action' => 'index', 'encoding' => 'Shift_JIS')) . PHP_EOL; ?> |
これでフォームのaccept-charsetはShift_JISに変更されます。
aタグでpostする方法
aタグにonclick属性をつけてpostでデータを渡そうとすると、細々書かないといけません。
ですが、CakePHPでは簡単に書くことができます。
ビューに次のように書きます。
1 |
<?php echo $this->Form->postLink('追加', array('action' => 'add')); ?> |
そうすると、次のようなコードが生成されます。
1 2 3 4 |
<form action="/pages/add" name="post_53e15638842ba219502240" id="post_53e15638842ba219502240" style="display:none;" method="post"> <input type="hidden" name="_method" value="POST"/> </form> <a href="#" onclick="document.post_53e15638842ba219502240.submit(); event.returnValue = false; return false;">追加</a> |
これで見た目は通常のaタグリンクと変わりありませんが、実際はFormのpostとして動くコードになります。
追加でパラメータを加えたい場合は、次のようにします。
1 |
<?php echo $this->Form->postLink('追加', array('action' => 'add', 'id' => 10)); ?> |
すると、formのactionが/pages/addから/pages/add/id:10のようになります。
フォームから受け取ったデータかの判別方法
フォームでPOSTする場合、次のようなコードを書きます。
1 |
<?php echo $this->Form->create('Sample', array('type' => 'post')) . PHP_EOL; ?> |
このフォームからデータを受け取ったかの判断をするには、Requestオブジェクトのisメソッドを利用します。
1 2 3 |
<?php if ($this->request->is('post')) { } |
こんな感じでPostされた場合とそうでない時とを分岐させるのに利用できます。
フォームのデータをビューに渡す
フォームで受け取ったデータをビューに渡す場合、$this->setで渡さなくても下記の方法でビューで受け取ることができます。
1 |
<?php print_r($this->request->data); ?> |
柴田 篤志
最新記事 by 柴田 篤志 (全て見る)
- WordPressとCakePHPの共存 - 2014年10月22日
- サイトマップの作成方法 - 2014年10月12日
- INSERTしたIDを取得する - 2014年10月4日