sfValidatorSchemaСравнить с собственными значениями? - PullRequest
0 голосов
/ 05 декабря 2011
$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
      new sfValidatorSchemaCompare('email', '==', 'email_confirm',
            array(),
            array('invalid' => 'The email adresses must match')
          ),
      new sfValidatorSchemaCompare('password', '==', 'password_confirm',
            array(),
            array('invalid' => 'The passwords must match')
          ),
        )));

это сравнить два значения из формы. Я хотел бы сравнить с собственными значениями:

    new sfValidatorSchemaCompare('secret_key', '==', '123456',
            array(),
            array('invalid' => 'The secret key must match')
          ),

            How can i make it?

1 Ответ

1 голос
/ 05 декабря 2011

sfValidatorSchemaCompare сравнивает введенное значение в двух полях (как в первом примере).Например: он проверяет, соответствует ли password значениям password_confirm.В этом случае поля password и password_confirm должны быть полями в вашей форме (точнее, валидаторами).

В вашем случае вы хотите проверить, соответствует ли secret_key значению предопределенное значение , , а не другое поле.И это немного странно , по умолчанию у symfony нет валидатора для проверки этого.Но вы можете легко использовать sfValidatorChoice для достижения цели:

$this->validatorSchema['secret_key'] = new sfValidatorChoice(array('choices' => array('123456')));

В этом случае значение, введенное в secret_key, сопоставляется со списком значений, который содержит только ваш секретный ключ.

И небольшой «совет» ;-): добавьте secret_key в свой app.yml, а затем просто добавьте sfConfig::get('app_form_secret_key') для проверки.

...