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