- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
if($model->validate(array('code')))
{
$model->addError('code', 'Введен неверный код купона. Купон с таким кодом уже существует.');
}
else
{
if($model->save())
{
$this->redirect(array('view','id'=>$model->id));
}
}
tirinox 12.11.2012 15:24 # +1
bormand 12.11.2012 15:38 # +2
Если Миша уже ввел свой код со своего купона, и получил за него какие-нибудь бонусы, а я взял и ввел такой же номер, то эта ошибка вполне резонна.
Это же не пароль, знание которого может пригодиться в дальнейшем...
Fai 12.11.2012 16:14 # +4
пароль1 (пользователь1)
пароль2 (пользователь2)
...
парольN (пользовательN)
Govnocoder#0xFF 12.11.2012 17:23 # −1
sleeper 13.11.2012 09:02 # 0
roman-kashitsyn 13.11.2012 09:08 # 0
bormand 13.11.2012 09:45 # 0
Steve_Brown 13.11.2012 10:09 # 0
roman-kashitsyn 13.11.2012 10:29 # +2
Гораздо разумнее назвать isValid().
Не зная семантики этого конкретного validate(), сложно сказать, есть ошибка в логике или нет.
LispGovno 13.11.2012 10:30 # 0
inValid
Razban_Guestov 14.11.2012 09:44 # 0
Собсно $model->addError() и будет влиять на hasErrors(), но только до валидации.
Логика сломана только потому, что save() и так врубит валидацию, т.е. должно быть так:
if( !$model->save() )
{
// Делаем чего-нибудь, например логируем
}
else
{
$this->redirect( 'view', array( 'id'=>$model->id ) );
В форме врубаем аякс при сабмите, в моделе делаем валидатор с этой ошибкой и получаем профит.
Сообщения об ошибках будут ухадить аяксом в форму и ... ну короче Вы поняли.