フォーム送信とForm Helper (4/5)
作成:2011-11-07 08:24
更新:2011-11-07 08:24
更新:2011-11-07 08:24
■コントローラーでForm Helperを処理する
さて、これを受け取る側のコントローラーも重要です。下のリスト欄に、前ページのindex.ctpを処理するSampleController.phpのコードを掲載しておきました。実際に動かして、フォームの値がどう処理されるか確認してみましょう。
このサンプルでは、最初に、このようなものを実行しているのがわかるでしょう。
続いて、送信されたかどうかをチェックするのに、こういう条件文を用意しています。
このサンプルでは、最初に、このようなものを実行しているのがわかるでしょう。
$this->modelClass = null;modelClassは、モデルのクラスを示すプロパティです。これの値をnullにしているのです。こうすることで、モデルを使わなくしています。Form Helperは、デフォルトでは、モデルに設定されたテーブルのデータを送信するフォームを生成する機能を持っており、まずモデルのチェックを行います。ですから、今回のようにモデルを利用しない場合は、この$this->modelClassをnullにしておかないと、「モデルが見つからない」とエラーになってしまいます。
続いて、送信されたかどうかをチェックするのに、こういう条件文を用意しています。
if ($this->request->data)……略……フォームを送信すると、$this->request->dataにその情報が連想配列としてまとめられます。つまり、このdataがあればフォームを送信されている、なければ普通にそのページにアクセスしている、と判断できるのです。送信されている場合には、フォームの値を、
$this->request->data[ 名前 ])このようにしてとり出しています。後は、取り出した値を元に処理を行うだけです。実にシンプルですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※SampleController.php <?php App::uses('AppController', 'Controller'); App::uses('Sanitize', 'Utility'); class SampleController extends AppController { public function index() { $this->modelClass = null; if ($this->request->data){ $result = Sanitize::stripAll( $this->request->data['text1']); } else { $result = "no data."; } $this->set("result", $result); } }
※関連コンテンツ
「初心者のためのCakePHP2 プログラミング入門」に戻る