Что не так делаю в rules?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Что не так делаю в rules?

Сообщение Странник »

У меня в БД в таблице post есть поля, необязательные к заполнению. Например 'preamble'.
Если я не вставляю preamble в моделе в правило

Код: Выделить всё

array('..., preamble, ...', 'required'),
то запись в это поле не производится.
То же самое и по другим полям. Например id_author.
Разве так должно быть?
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Что не так делаю в rules?

Сообщение SiZE »

через метод setAttributes атрибутам модели присваиваются только те данные, который есть в rules. Как указали выше, можно просто добавить правило safe, но зачастую это не совсем правильно, проверьте хотя бы максимальную длину поля.
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Что не так делаю в rules?

Сообщение Странник »

В safe всё стоит:

Код: Выделить всё

array('..., preamble,...', 'safe', 'on'=>'search'),
А длину для текстового поля не хотелось бы указывать.
А может быть причиной, что в relations стоит:

Код: Выделить всё

 'author'=>array(self::BELONGS_TO, 'User', 'id_author'),
 
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Что не так делаю в rules?

Сообщение Странник »

Не понимаю как это может быть, но оказалось, что на неправильную работу влиял критерий order в модели:

Код: Выделить всё

public function search()
    {
        $criteria=new CDbCriteria;
        $criteria->compare(...);
        $criteria->order = 'id DESC';
        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    } 
Убрал его и всё заработало.
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Что не так делаю в rules?

Сообщение SiZE »

Ты видимо вообще ниче не понимаешь. safe у тебя для сценария search. Подумай зачем ты написал нам про сохранение данных, а сам что-то про поиск пишешь? Ты в базу заглядывал? Или у тебя на странице ничего не выводилось?
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Что не так делаю в rules?

Сообщение Странник »

Эксперименты закончились тем, что как ты и советовал пришлось установить в rules array('preamble', 'length', 'max'=>1000)
Извини, но предыдущий ответ случайно не в ту ветку кинул.
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Что не так делаю в rules?

Сообщение SiZE »

Странник писал(а):Эксперименты закончились тем, что как ты и советовал пришлось установить в rules array('preamble', 'length', 'max'=>1000)
Извини, но предыдущий ответ случайно не в ту ветку кинул.
Да мне то чего. Главное чтобы ты разобрался. Ты писал так? Без 'on' => 'search' и тп.

Код: Выделить всё

array('preamble', 'safe'),
Странник
Сообщения: 295
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Что не так делаю в rules?

Сообщение Странник »

SiZE писал(а):Да мне то чего. Главное чтобы ты разобрался. Ты писал так? Без 'on' => 'search' и тп.

Код: Выделить всё

array('preamble', 'safe'), 
Пробовал и с 'on' => 'search' и без него.
Пробовал и

Код: Выделить всё

array('preamble', 'unsafe'), 
Помогло только

Код: Выделить всё

array('preamble', 'length', 'max'=>1000) 
Ответить