Exile
(Exile Zh)
1
Я недавно начал работать с 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'];
однако меня такое решение не устраивает, мне кажется что есть более адекватное.
из-за чего может быть данная проблема?
Charger
(Charger)
2
Ты очень хорошо описал проблему, сразу видно что не новичек. Но кое что из документации по Yii таки упустил.
Если поле не фигурирует в rules то оно не будет присвоено таким образом: $model->attributes = $_POST[‘Page’];
В твоем случае нужно в rules добавить
array('content, keywords', 'safe'),
PolarBear
(Potyomkinsergey)
4
У меня схожая проблема.
Поле при сохранении имеет свое первоначальное значение, в моем случае 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')
остальные поля нормально сохраняются.
urmaul
(Masterbodik)
5
array('user, phone, hard_indate', 'safe', 'on'=>'search')
Значит, что их можно будет записывать только при сценарии "search".
Убери ‘on’ => ‘search’ или добавь туда имя сценария, который там у тебя. Скорее всего, это ‘insert’.
PolarBear
(Potyomkinsergey)
6
Спасибо, помогло .
Продолжаю изучать фреймворк