Проверка формы Symfony 2 с зависимостями - PullRequest
0 голосов
/ 04 августа 2011

У меня есть сущность с 2 полями (конечно, еще немного, но для простоты только 2 :)):

class Entity
{
    // boolean type
    protected $is_public;
    // hashed string
    protected $password;
}

Теперь мне нужна форма в Symfony 2 для этой сущности со следующими зависимостями отполе пароля: когда пользователь устанавливает флажок для $ is_public, ему не нужно вводить пароль.С другой стороны, когда пользователь хочет, чтобы объект (в моем случае группа пользователей) был закрытым, он должен ввести пароль, содержащий не менее N символов.

Как бы вы это сделали с валидаторами?поставляется с фреймворком symfony2?Есть ли способ достичь моих целей?

Заранее спасибо,

Andi

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Единственный найденный мной способ - создать пользовательский Constraint, с ограничением класса, к которому вы можете получить доступ ко всем свойствам вашего объекта.

Посмотрите на следующие классы:

и создайте свою собственную с помощью своей логики.

0 голосов
/ 23 марта 2012

Вы можете указать функцию обратного вызова, которая вызывается во время проверки, и делать так, чтобы она выполняла практически все, что вы хотите.Вот документы:

http://symfony.com/doc/current/reference/constraints/Callback.html

Обратите внимание: если вы используете переводы, вы также можете указать строковый ключ в вызове addViolation.

$context->addViolation(
  'Acme\DemoBundle\Entity\MyEntity.entityField.validationErrorString1',
  array(), null);
...