3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(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ボックスを表示させました。

echo $form->hour('Missionary.time', true , 0 , null , false )?>

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でした。

echo $form->hour('Missionary.time', true , 0 , array() , false )?>

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

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

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