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

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

作成:2011-11-07 08:26
更新:2011-11-07 08:28

■Form Helperの基本メソッド

では、Form Helperに用意されているその他のタグについてもひと通り整理しておきましょう。フォームで使われるコントロールの基本的なものについて、その生成用のメソッドを紹介していきます。

入力フィールド
$this->Form->text( 名前 , 連想配列 );
前回、サンプルに使いましたね。<input type=”text”>による入力フィールドを生成するためのものです。第1引数には名前を、第2引数には、必要な属性の設定などを連想配列にまとめたものを渡します。これは、不要ならばなくてもかまいません。

チェックボックス
$this->Form->checkbox( 名前 , 連想配列 );
チェックボックスは、checkboxメソッドで生成します。やはり名前を第1引数に指定し、第2引数にはオプション設定をまとめた連想配列を用意します。

ラジオボタン
$this->Form->radio( 名前 , 配列 , 連想配列 );
ラジオボタンはradioメソッドで生成しますが、これは引数が少し違っています。第1引数は名前を指定しますが、第2引数には、作成するラジオボタン名を配列にまとめたものを指定します。これは、ただ名前を配列にしたものでもいいのですが、valueをキーとし表示テキストを値とする連想配列の形でまとめたものでも受け付けることができます。第3引数は、例によって属性の連想配列です。

セレクトメニュー
$this->Form->select( 名前 , 配列 , 連想配列 );
<select>タグによるセレクトメニューです。これもラジオボタンと同様、表示する項目名を配列にまとめたものを第2引数に指定します。やはり、valueと表示テキストを連想配列の形でまとめたものでもOKです。第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'=>'.'));
    echo $this->Form->label('text1',"message");
    echo $this->Form->text('text1');
    echo $this->Form->checkbox('check1');
    echo $this->Form->label('check1',"checkbox1");
    echo $this->Form->radio('radio1', 
        array('male' => '男性', 
          'female' => '女性'));
    echo $this->Form->select('select1',
        array("Mac" => 'マック',
          "Windows" => 'ウインドウズ',
          "Linux" => 'リナックス'));
    echo $this->Form->end("送信");
  ?>
</p>
</div>


※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 = "[result]";
      $result .= "<br>text1: " . Sanitize::
          stripAll($this->request->data['text1']);
      $result .= "<br>check1: " . 
          $this->request->data['check1'];
      $result .= "<br>radio1: " . 
          $this->request->data['radio1'];
      $result .= "<br>select1: " . 
          $this->request->data['select1'];
    } else {
      $result = "no data.";
    }
    $this->set("result", $result);
  }

}

※関連コンテンツ

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