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’);

~略~

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Post Navigation