Viewに関する備忘録
Viewに関して色々と忘れそうなのでメモ
■エレメントを読み込み
views/elements/navi_header.ctpの読み込み <?php echo $this->element("navi_header" ); ?>
■フォーム開始タグでURLを指定
URLにhttpから記載すればどのファイルへもPOST/GETで渡すことが可能 <?php echo $form->create('Model', array( 'url' => 'http://localhost/hoge/hehe.php' ) );?> URLを相対パスにすると、cakephpのrootからのパスとなる <?php echo $form->create('Model', array( 'url' => '/hoge/index' ) );?>
■テキストインプット
Calss,ID属性の指定 <?php echo $form->text('Model/postcode1', $options = array( "size" => "8", "maxlength" => "3", "class" => "form", "id" => "zip1" ) ); ?>
Optionsの値が自動的にエスケープされるのを防ぐ(ここではJavaScriptの&&が自動エスケープされるのを防いでいる)
escape => falseにすればエスケープの回避が可能 <?php echo $form->text('Model/email', $options = array( 'escape' => false, 'id' => 'email', "size" => "40", 'onkeydown' => "if(event.keyCode==86 && event.ctrlKey==true) return false;" ) ); ?>
■ラジオボタン
separatorでラジオボタン間の文字を定義。第2引数の配列でラジオボタンの値とラベル名を指定
<?php echo $form->radio('Model/kekkon', $options=array("1" => "既婚", "2" => "未婚"), $attributes = array("legend" => false, "separator" => " ") ); ?>
■セレクト
最初の選択肢が、「選択してください」」となる <?php echo $form->select( 'Model/prefecture', $selectPrefecture, null ,array() , array('empty' => '▼選択してください')) ?>
id,class属性指定 <?php echo $form->select( 'Model/mobile_domain', $selectMobileDomain, null, array( 'id' => 'mobile_domain', 'class' => 'mobile') ,null) ?>
追記
selectメソッドの第5引数は、デフォルト選択表示なんだけど、ここに上記のように配列で指定すると、下記のように、配列のキーをvalue、値を表示名のように展開してしまう。
<select name="data[Model][prefecture]"> <option value="empty">▼選択してください</option> <option value="1">ほげ</option>
下記のように、配列ではなく文字列で指定すればvalue=""となる
<?php echo $form->select( 'Model/prefecture', $selectPrefecture, null ,array() , '▼選択してください' ) ?>
<select name="data[Model][prefecture]"> <option value="">▼選択してください</option> <option value="1">ほげ</option>
■チェックボックス
同一nameのチェックボックスを定義。$checkにfalseを入れればチェック無し、1を入れればcheckedを付けてくれる。
<?php echo $form->checkbox( 'Model.kyoumi][1', $options = array('value' => 1, 'checked' => $check[1] )); ?>hoge1 <?php echo $form->checkbox( 'Model.kyoumi][2', $options = array('value' => 2, 'checked' => $check[2] )); ?>hoge2 <?php echo $form->checkbox( 'Model.kyoumi][3', $options = array('value' => 3, 'checked' => $check[3] )); ?>hoge3
上記の場合、データは下記のような配列になっていて、これをコントローラで受け取れる。
$this->data[Model]['kyoumi'][1] = 1 $this->data[Model]['kyoumi'][2] = 2 $this->data[Model]['kyoumi'][3] = 3