CakePHPで複数選択項目を保存するときに、
最低限1つは登録するようにvalidationを設置したときに迷ったのでメモ。
ブログの記事をPost 、 記事のタグを Tagとして
記事に PHPとか、MySQLとか復数の Tagを関連付けれるようにするとした場合に、
Post Model に
var $validate = array(
‘Tag’ => array(
‘rule’ => array(‘multiple’ => array(‘min’ => 1))
),
);
と指定すれば、未設定の場合にエラーにしてくれるようにはなった。
だがその後に、エラーメッセージが表示されないという問題がでた…
例のごとく世界中のお友達の意見を覗いてもみんなバラバラしていて、メジャーなのものが分からなかったので
以下で対応。
Modelは変更せずに、Controller と View を変更。
[Controller]
~略~
$this->data[‘Post’][‘Tag’] = $this->data[‘Tag’][‘Tag’]; // << 追加
if ($this->Post->save($this->data)) {
~略~
[View]
~略~
echo $this->Form->input(‘Tag’, array(
‘type’ => ‘select’,
‘multiple’ => ‘checkbox’,
‘error’ => false,
));
echo $this->Form->error(‘Post.Tag’);
~略~
最近のコメント