rules exist

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

rules exist

Сообщение nepster »

у меня в моделе есть вот такое правило для пользователя.

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

 array('user_id', 'exist', 'className'=>'UsersModel','attributeName'=>'user_id', 'message'=>'Такого пользователя нет в базе'), 
Это у нас модуль новости, и администратор пишет новость, указывая кто автор. Это может быть любой пользователь из базы, либо аноним (значение 0).

Подскажите пожалуйста как можно сделать валидацию поля user_id, так что в это поле может попасть либо 0, либо любой пользователь из базы?
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: rules exist

Сообщение Nafania »

Если именно 0 нужно, то только свой валидатор. Если допустимо '' или NULL, то просто allowEmpty = true
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: rules exist

Сообщение nepster »

а как дописать свой валидатор ? Это же не фильтр ?
Фриз
Сообщения: 85
Зарегистрирован: 2012.01.20, 17:23

Re: rules exist

Сообщение Фриз »

Добавьте в этой же модели метод который будет проверять:

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

/**
 * @param string $attribute имя поля, которое будем валидировать
 * @param array $params дополнительные параметры для правила валидации
 */
public function validatorName($attribute, $params) { … }
Используйте его как валидатор:

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

 array('user_id', 'validatorName', 'className' => 'UsersModel', 'attributeName' => 'user_id', 'message' => 'Такого пользователя нет в базе'), 
Подробней: http://www.yiiframework.com/doc/guide/1.1/ru/form.model
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: rules exist

Сообщение nepster »

ага понял, только еще 1 вопрос, а зачем передавать:

'className' => 'UsersModel', 'attributeName' => 'user_id' ?
Фриз
Сообщения: 85
Зарегистрирован: 2012.01.20, 17:23

Re: rules exist

Сообщение Фриз »

Не знаю. Думаю незачем :)
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: rules exist

Сообщение TranceSmile »

nepster писал(а):ага понял, только еще 1 вопрос, а зачем передавать:

'className' => 'UsersModel', 'attributeName' => 'user_id' ?
Ну если вам нужно в модели новостей проверить есть ли пользователь, так вот className указывает модель в которой искать
Изображение
Ответить