Показаны сообщения с ярлыком validation. Показать все сообщения
Показаны сообщения с ярлыком validation. Показать все сообщения

понедельник, 21 марта 2011 г.

How to change "csrf attack detected" message in symfony

It is proposed some methods how to change this message.

I wrote another simple one:

1. Override addCSRFProtection in BaseForm.class.php:

public function addCSRFProtection($secret = null)
  {
    parent::addCSRFProtection($secret);
    $validatorSchema=$this->getValidatorSchema();
    if (isset($validatorSchema[self::$CSRFFieldName])) 
    {
      $validatorSchema[self::$CSRFFieldName]=new myValidatorCSRFToken($validatorSchema[self::$CSRFFieldName]->getOptions());
    }
  }

2. Add new myValidatorCSRFToken.class.php with contents:

class myValidatorCSRFToken extends sfValidatorBase
{
  protected function configure($options = array(), $messages = array())
  {
    $this->addRequiredOption('token');

    $this->setOption('required', true);

    $this->addMessage('csrf_attack', 'Время сессии истекло.');
  }

  protected function doClean($value)
  {
    if ($value != $this->getOption('token'))
    {
      $exception=new sfValidatorError($this, 'csrf_attack');
      throw new sfValidatorErrorSchema($this, array($exception));
    }

    return $value;
  }
}

3. That's all :)

пятница, 19 марта 2010 г.

Валидатор для проверки вхождения значения одного поля в значение другого

Простите, мне не удалось упростить заголовок поста. Итак, мне потребовалось проверить в форме, является ли значение поля А элементом массива, переданного в поле Б. После недолгих споров, я принял совет Павла наследовать валидатор-схему. Действительно, других способов получить доступ к двум и более полям формы, кажется, нет. Для одного поля подошел бы валидатор sfValidatorShemaFilter, но в нашем случае это решение не подходит - поля два.

воскресенье, 13 декабря 2009 г.

Валидатор для проверки чет-нечет

При вводе, например, размера одежды в российском стандарте (42,44,46,...) нужно проверить, чтобы число было четным (или, в каком-то другом случае, оно должно быть нечетным). Для проверки пользуемся валидатором NumberEvenOdd, который наследуется от обычного sfValidatorNumber.