Есть ли способ предотвратить переход формы к пост-проверке, если в «нормальной» проверке произошла ошибка?
Вам нужно использовать обратный вызов для проверки формы ... Например:
public function configure() { $this->widgetSchema['email'] = new sfWidgetFormInput(); $this->validatorSchema['email'] = new sfValidatorEmail(array('required' => true)); $this->validatorSchema->setPostValidator( new sfValidatorCallback(array('callback' => array($this, 'postValidate'))) ); } public function postValidate($validator, $values) { // only run the post validator if the email has passed validation // if it hasn't passed validation, it will be blank and we can skip this if ($values['email']) { $v = new myPostValidator(); $v->clean($values); } return $values; }
Это зависит от того, что вы подразумеваете под «нормальным» и пост-валидацией:
В классах действий вы можете использовать условие:
if ($form->isValid()) { // code here before and after the save(); }
Или вы используете postExecute вдействие