フォーム
フォームをテンプレートに用意
<form method="get" action="/hello/sendForm"> <input type="text" name="text1" /> <inout type="submit" /> </form>
フォームを送った先
<h1>送信結果</h1> <p><?=$result ?></p>
ファイル名はsend_form.ctpとする。クラス、メソッド名はキャメル記法なのに対し、アンダースコア記法であることが注意するところ。
コントローラにhello/sendFormのアクションを書く
<?- class HelloController extends AppController { //略 public function sendForm() { $str = $this->request->query['text1']; //getで送ったものはquery連想配列に入っている。 $result="empty."; if ($str != "") { $result = "you type:" . $str; } $this->set("result", $result); } } ->
フォームを通してでなくても
snedForm?text1=hoge
でも送れる。
ただし、XSS攻撃回避策としてタグを無効化するエスケープ処理を入れる必要がある。それには
<?= $this->set("result", htmlspecialchars($result)); =>
とする。
省略記法として
<?= $this->set("result", h($result)); => でも良い。