Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

vagrantその19-12 cakephp入門をやってみる(Formその3) FormHelperによるform要素の生成

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

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

index.ctpの記述内容

参考ページにならって以下のとおり

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

ここでちょっと問題が

この段階でhttp://192.168.33.10/cakephp/sample/indexを確認すると、

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

の部分で$resultが未定義なのでエラーが出た。

なので

<p>result</p>

に変更

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

の部分も、自分は2.5.6を使っているので、nullではなくてfalseにする必要があり

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

とした。

出力されたhtmlソース

から
までを抜粋してみた。

以下のような感じ。

<form accept-charset="utf-8" method="post" id="Form" action="/cakephp/sample/.">
  <div style="display:none;">
    <input type="hidden" value="POST" name="_method">
  </div>
  <input type="text" id="text1" value="" name="data[text1]">
  <div class="submit">
    <input type="submit" value="送信">
  </div>
</form>

今回のソースについて解説

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

参考ページにもあるとおり、typeではmethod属性を設定し、actionはaction属性を設定する。

./formにするべきだったのかなー?とちょっと思っているけど一旦スルーで。

  <div style="display:none;">
    <input type="hidden" value="POST" name="_method">
  </div>

のような感じで、type="hidden"の要素が生成されていた。

    echo $this->Form->text('text1');

でテキストフォームが生成された。
引数のtext1がname属性に適用されているのがわかる。

    echo $this->Form->end("送信");

で送信ボタンと、</form>が生成されている。

今回はここまで。