人気ブログランキング |
(cakePHP)Formヘルパーのselectボックス(時,分)表示 Warning array_merge()が出た。
cakePHPで時や分を独立で表示したいときはFormヘルパーの hourメソッド や minuteメソッド が使えます。
定義、使い方は下記の通りです。(cakePHPポケットリファレンスより引用)

時選択タグ表示
FromHelper::hour( $fieldName , $format24Horus = false , $selected = null ,
$attibutes = array() , $showEmpty = true )
$fieldName :[string] 入力を受け付ける要素("モデル名.フィールド名"の形式)
$format24Horus :[boolean]true:24時間表記
$selected :[string] 初期選択値
$attibutes :[array] 要素の属性
$showEmpty :[boolean]空のoption要素を出力するかどうか。(文字列指定するとその文字が空要素の内容になる)

分選択タグ表示
FromHelper::minute( $fieldName , $selected = null ,
$attibutes = array() , $showEmpty = true )
$fieldName :[string] 入力を受け付ける要素("モデル名.フィールド名"の形式)
$selected :[string] 初期選択値
$attibutes :[array] 要素の属性
$showEmpty :[boolean]空のoption要素を出力するかどうか。(文字列指定するとその文字が空要素の内容になる)

で、これに従って、下記のように、Formヘルパーで時間と、分を選択させるSelectボックスを表示させました。
<!-- ViewのCTPファイル-->
<?php echo $form->hour('Missionary.time', true , 0 , null , false )?>
<?php echo $form->minute('Missionary.time', 0 , null , false )?>

で、こうすると下記のような警告が出てきました。

Warning (2): array_merge() [function.array-merge]: Argument #1 is not an array [CORE\cake\libs\view\helpers\form.php, line 1141]

なんじゃ、こりゃと思って、いろいろ調べると、CakePHPクッキングにて答えが載せられてました。

どうやら、1.2のRC3以降では引数の $attibutes に null を渡していたのがまずいようです。これを下記のように array() にするとOKでした。

<!-- ViewのCTPファイル-->
<?php echo $form->hour('Missionary.time', true , 0 , array() , false )?>

<?php echo $form->minute('Missionary.time', 0 , array() , false )?>


ちなみに、cakePHPポケットリファレンスの例では $attibutes に null を渡しているので、これ見ながら作ってる人は要注意です。(まあポケットリファレンスのほうは1.2のベータ版で評価してるっぽいので、仕方ないのですが。。。)

CakePHP ポケットリファレンス (Pocket Reference)


by jehoshaphat | 2008-12-04 14:12 | PHP開発


<< (VB.Net)ADO.Net... (cakePHP)MySQL保... >>