CakePHP3 フォームその4
今回はFormヘルパーによるフォームの生成について。 ここまではビューテンプレートにそのままフォームのタグを書いて実行してきたが、 CakePHPにはタグを自動生成する機能が用意されている。
$this->Formの形でインスタンスのメソッドを呼び出す。
そしてフォームの開始タグを生成する形がこれ
create(モデル名,属性指定);
-ファイル src/Template/Hello/index.ctp
<h1>サンプル見出し</h1> <p> <?=$result; ?> </p> <?=$this->Form->create(null,['type'=>'post', 'url'=>['controller'=>'Hello', 'action'=>'index']]) ?> <?=$this->Form->text("HelloForm.text1") ?> <?=$this->Form->submit("送信") ?> <?=$this->Form->end(); ?>
モデル名に関しては今回は特にモデルに情報を入れないパターンの紹介なのでnullで。
['type'=>'post', 'url'=>['controller'=>'Hello', 'action'=>'index'] これでtype属性に'post'、url属性に['controller'=>'Hello', 'action'=>'index']が設定される。
入力フィールドに関してはこちら
text(名前);
text(名前,属性指定);
送信ボタンのタグ生成に関してはこちら
submit(キャプション);
submit(キャプション,属性指定);
そして最後にはフォームの終了タグを生成するために
end();
-ファイル src/Template/Hello/send_form.ctp
public function index(){ $result = ""; if ($this->request->isPost()){ $result = "<pre>※送信された情報<br/>"; foreach($this->request->data['HelloForm'] as $key => $val){ $result .= $key . ' => ' . $val; } $result .= "</pre>"; } else { $result = "※なにか書いて送信してください。"; } $this->set("result", $result); }
上記のビューテンプレートに関してはhello/indexに送られるようにフォームのactionを指定しているので、 indexメソッドに上記のように記述すればフォームヘルパーを使った形でのフォーム生成は完成する。