Motomichi Works Blog

その日学習したことについて書いている日記です。誰かの役に立ったらそれはそれで嬉しいです。

vagrantその19-13 cakephp入門をやってみる(Formその4) コントローラーでForm Helperを処理する

参考にさせて頂いたページ

フォーム送信とForm Helper(4/5):初心者のためのCakePHP2.0 プログラミング入門

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);
  }
}

このソースコードについて

参考ページによると

$this->modelClass = null;

の一行は

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

とのこと。

送信されたデータは

$this->request->data

に格納されるとのことなので、

    if ($this->request->data){
      $result = Sanitize::stripAll(
        $this->request->data['text1']);
    } else {
      $result = "no data.";
    }

のようにして、$resultに文字列を格納しています。

前回編集してしまったindex.ctpを直す

前回

<p>result</p>

としてしまった箇所を

<p><?php echo $result; ?></p>

に直した。

これで、送信する度にここに送信結果が出力されるというわけだ。

index.ctpは以下の通り。

<h1>Index Page</h1>
<p>this is test View.</p>
<p><?php echo $result; ?></p>
<p>
  <?php
    echo $this->Form->create(false,
      array('type'=>'post','action'=>'.')); // 2.1では、null→false
    echo $this->Form->text('text1');
    echo $this->Form->end("送信");
  ?>
</p>
</div>

軽くまとめというか疑問というか

index.ctp内の記述では、

    echo $this->Form->create(false,
      array('type'=>'post','action'=>'.')); // 2.1では、null→false

とform要素をcreateするときに、falseを渡して、

SampleController.php内の記述では、

$this->modelClass = null;

とnullを渡すってことで良いのかなぁ?

$this->modelClass = false;

としても普通に表示されるし、検索してもパッとわかる感じでもないので、頭の隅に留めておいて、一旦今日は無視しよう。

今回はここまで。