libro
www.tuyano.com
初心者のためのCakePHP2 プログラミング入門

フォーム送信とForm Helper (4/5)

作成:2011-11-07 08:24
更新:2011-11-07 08:24

■コントローラーでForm Helperを処理する

さて、これを受け取る側のコントローラーも重要です。下のリスト欄に、前ページのindex.ctpを処理するSampleController.phpのコードを掲載しておきました。実際に動かして、フォームの値がどう処理されるか確認してみましょう。

このサンプルでは、最初に、このようなものを実行しているのがわかるでしょう。
$this->modelClass = null;
modelClassは、モデルのクラスを示すプロパティです。これの値をnullにしているのです。こうすることで、モデルを使わなくしています。Form Helperは、デフォルトでは、モデルに設定されたテーブルのデータを送信するフォームを生成する機能を持っており、まずモデルのチェックを行います。ですから、今回のようにモデルを利用しない場合は、この$this->modelClassnullにしておかないと、「モデルが見つからない」とエラーになってしまいます。

続いて、送信されたかどうかをチェックするのに、こういう条件文を用意しています。
if ($this->request->data)……略……
フォームを送信すると、$this->request->dataにその情報が連想配列としてまとめられます。つまり、このdataがあればフォームを送信されている、なければ普通にそのページにアクセスしている、と判断できるのです。送信されている場合には、フォームの値を、
$this->request->data[ 名前 ])
このようにしてとり出しています。後は、取り出した値を元に処理を行うだけです。実にシンプルですね。

※プログラムリストが表示されない場合

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 プログラミング入門」に戻る