フォームのセレクトを複数選択可能のものにしながらも何も選択せずに送信したら、以下のエラーが表示しました。

Missing field ** in POST data

controller内でdebugでpostの中身を見ようともなぜかエラー表示で見れず。

SecurityComponent.phpがどうのこうのとセキュリティの問題っぽいがdebugで送信した中身が見れないためよく分かりませんw

フォームがどのように生成されているのかを確認してみると、ある部分があるものとないものが幾つがあった。

<input type="hidden" name="sample" value="">

hiddenインプットをFormヘルパーがフォーム部品として生成してるもので、選択しなくても良いselectフォームを作る場合、もし選択しない場合はhiddenインプットで空のデータを飛ばす必要があるのですが、これが生成されておらず、飛んでくるはずのデータがないよーということで、これがエラーの原因となっていたようす。

では、なぜhiddenインプットが生成されてないの?とプログラムを確認すると、以下の設定をしてしまっていました。

'hiddenField' => false

これはhiddenのinputを作らないオプションということだそう。

だから、選択必要ないものでselectフォームをFormヘルパーで作る時は、一応以下の設定をしてあげよう。

 

'hiddenField' => true

ただ、DB側でNULLがOKの設定にしているのであれば大丈夫なのだとか。