コントローラーとビュー (5/6)
作成:2015-08-29 10:10
更新:2015-08-29 10:10
更新:2015-08-29 10:10
■フォームを作成する
では、実際の利用例を挙げておきましょう。まず、index.ctpを下のように書き直しましょう。
ここでは、text1という名前の項目をフォームに1つだけ用意しておきました。そしてこれを処理するようにコントローラーを修正します(下のリスト欄参照)。
実際に http://localhost:8765/helo/ にアクセスして、フォームに何か書いて送信してみましょう。画面に「you typed:○○」という形で送信したテキストが表示されます。
ここでは、フォームを表示する処理と、フォームを送信した場合の処理をすべてindexアクションで行っています。これは、こんな感じで使い分けています。
フォームを送信すると、$this->request->data('text1')で値が取り出せますが、普通にアクセスした時には(フォームは送信されてないので)この値はnullになります。これをifでチェックし、それによって処理を分けている、というわけです。
この他、アクセスの方法がGETかPOSTかを調べ、それによって処理を分岐させる方法もあるでしょう。リクエスト方法のチェックは、Requestの「is」というメソッドで調べることができます。これはアクセス時の環境情方法を調べるもので、
このようにすれば、POSTアクセスかどうかがわかります。この値がtrueならばPOSTアクセスしており、falseならばPOSTではない、というわけです。
<div>
<h3>Index Page</h3>
<p><?= $message ?></p>
<form method="post" action="/helo/index">
<input type="text" name="text1">
<input type="submit">
</form>
</div>
ここでは、text1という名前の項目をフォームに1つだけ用意しておきました。そしてこれを処理するようにコントローラーを修正します(下のリスト欄参照)。
実際に http://localhost:8765/helo/ にアクセスして、フォームに何か書いて送信してみましょう。画面に「you typed:○○」という形で送信したテキストが表示されます。
ここでは、フォームを表示する処理と、フォームを送信した場合の処理をすべてindexアクションで行っています。これは、こんな感じで使い分けています。
$str = $this->request->data('text1');
if ($str != null){
……フォーム送信時の処理……
} else {
……通常アクセス時の処理……
}
フォームを送信すると、$this->request->data('text1')で値が取り出せますが、普通にアクセスした時には(フォームは送信されてないので)この値はnullになります。これをifでチェックし、それによって処理を分けている、というわけです。
この他、アクセスの方法がGETかPOSTかを調べ、それによって処理を分岐させる方法もあるでしょう。リクエスト方法のチェックは、Requestの「is」というメソッドで調べることができます。これはアクセス時の環境情方法を調べるもので、
$変数 = $this->request->is('post');
このようにすれば、POSTアクセスかどうかがわかります。この値がtrueならばPOSTアクセスしており、falseならばPOSTではない、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php namespace App\Controller; use App\Controller\AppController; class HeloController extends AppController { public function index() { $str = $this->request->data('text1'); if ($str != null){ $str = $this->request->data['text1']; $this->set('message', 'you typed:' . $str); } else { $this->set('message','please type...'); } } }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る