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

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

作成:2011-11-07 08:22
更新:2012-06-10 11:44

■FormHelperによるフォームの生成

これで一応、フォームを送信して受け取り処理する、という基本はできるようになりました。けれど、これではあまりCakePHPというフレームワークを利用する便利さが実感できない気がしますね。普通にPHPで書いても同じででしょ、みたいな。

そこで、もう少し便利にフォームを利用する方法を利用しましょう。それは「Form Helper」を使った方法です。Form Helperというのは、フォームを生成するためのヘルパーです。

ヘルパーというのは、ビューでの入力を支援するためにCakePHPに用意されたプログラムです。ヘルパーを利用することで、面倒なHTMLコードを正しく生成することができます。タグの書き間違いや書き忘れなども、ヘルパーを利用すれば予防できます。また、ヘルパーはPHPのスクリプトとして使いますので、スクリプト的にHTMLタグを操作するのも楽になります。

Form Helperは、フォーム関連のタグを生成するためのヘルパーです。このForm Helperは、ビューのタグを生成するものですから、ビューに記述をします(ヘルパーは基本的にすべてそうです)。

利用例を下のリスト欄に掲載しておきましたので、実際に動かしてみましょう。ここでは、1つの入力フィールドがあるだけの単純なフォームを用意しています。これでForm Helperの基本的な使い方を理解しましょう。

1. フォームの開始
$this->Form->create( モデル , 連想配列 );
フォームの生成は、まずcreateメソッドで開始します。これは、第1引数に使用するモデル名を、第2引数に必要なオプション情報を連想配列にまとめたものをそれぞれ指定します。モデルに関しては、まだ使っていませんから、ここはnullにしておきましょう。第2引数のオプション情報には、以下のような値が用意されています。

(※CakePHP 2.1では、nullではなく、falseにしないとモデルを探しにいってしまうようです。ご注意を)

array('type'=>'post','action'=>'.')
typeactionという2つの値が用意されていますね。type<form>タグのmethod属性を指定するもので、’get’または’post’を指定します。actionは、<form>action属性を指定するもので、ここでは自分自身に送信するので’.’を指定しています。

2. テキストフィールドの生成
これは次のページでまとめて説明します。

3. フォームの終了
$this->Form->end( 送信ボタンのテキスト );
フォームの内容を書き終わったら、最後にendでフォームを終了します。このとき、引数にテキストを指定すると、そのテキストを表示する送信ボタンが自動的に作成されます。

――Form Helperは、このように$this->Formプロパティに組み込まれており、このオブジェクトのメソッドを呼び出すことでタグを生成します。とりあえず、creattextendの3つだけ覚えておけば、簡単な入力用のフォームぐらいは作れるようになりますね。簡単な利用例を下に掲載しておきます。後は、これを処理するコントローラーを作成するだけです。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※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>
※関連コンテンツ

「初心者のためのCakePHP2 プログラミング入門」に戻る