Допустим, у меня есть модельный проект, а owner_id обозначает владельца проекта. При создании нового проекта пользователю необходимо ввести имя владельца вместо id. Я пишу метод для проверки, чтобы убедиться, что пользователь существует в системе, а затем я могу получить идентификатор пользователя. Правило:
array('owner_name', 'userValidation')
Но я считаю, что проверка вызывается только тогда, когда выполняется приведенное ниже утверждение
$model->save()
, что означает, что если я попытаюсь получить идентификатор пользователя, которого нет в системе, до сохранения с помощью операторов
$model->validate();
$user=User::model()->findByAttributes(array('username'=>$model->owner_name));
$model->owner_id=$user->id;
будет исключение. Поэтому мой вопрос заключается в том, почему проверка не работает должным образом, когда я вызываю метод validate ()? Я проверил исходный код метода сохранения в Yii
public function save($runValidation=true,$attributes=null)
{
if(!$runValidation || $this->validate($attributes))
return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);
else
return false;
}
Я думаю, что это также пытается проверить с помощью вызова validate ().