Не записываются не обязательные поля в БД

Я недавно начал работать с Yii.

Сейчас столкнулся с проблемой, если в rules() не указываю некоторые поля как обязательные, то они не сохраняются.

т.е.


array('content, keywords, metaDescription, pageType', 'required'),

запись content, keywords, metaDescription происходит без проблем

если


array('pageType', 'required'),

то эти 3 поля просто не записываются.

в контроллере после

$model->attributes = $_POST[‘Page’];

вывожу содержимое $model->attributes и там видно что эти 3 поля пустых , хотя при выводе $_POST[‘Page’] они там заполнены.

решил эту проблему следующим образом:


            $model->content = $_POST['Page']['content'];

            $model->keywords = $_POST['Page']['keywords'];

            $model->metaDescription = $_POST['Page']['metaDescription'];

однако меня такое решение не устраивает, мне кажется что есть более адекватное.

из-за чего может быть данная проблема?

Ты очень хорошо описал проблему, сразу видно что не новичек. Но кое что из документации по Yii таки упустил.

Если поле не фигурирует в rules то оно не будет присвоено таким образом: $model->attributes = $_POST[‘Page’];

В твоем случае нужно в rules добавить




array('content, keywords', 'safe'),



Спасибо! Выручил :)

У меня схожая проблема.

Поле при сохранении имеет свое первоначальное значение, в моем случае 0000-00-00.

Поле есть в rules.

array(‘hard_id, hard_inv, hard_type, hard_otdel, hard_room, user, phone, hard_indate’, ‘safe’, ‘on’=>‘search’)


array('user, phone, hard_indate', 'safe', 'on'=>'search')

остальные поля нормально сохраняются.


array('user, phone, hard_indate', 'safe', 'on'=>'search')

Значит, что их можно будет записывать только при сценарии "search".

Убери ‘on’ => ‘search’ или добавь туда имя сценария, который там у тебя. Скорее всего, это ‘insert’.

Спасибо, помогло ;).

Продолжаю изучать фреймворк