8
votes

Un champ ne doit pas être vide si certains champs sont blancs sous forme de symfony

Dans ma demande Symfony 2 (2.4.2), il existe un type de formulaire composé de 3 champs.

J'aimerais que la validation soit comme ceci: si champ A et champ B est vide, champ C ne doit pas être vide. Cela signifie que au moins un champ devrait recevoir certaines données.

Actuellement, je vérifie les données reçues dans le contrôleur. Y a-t-il une façon plus recommandée de faire cela?


0 commentaires

3 Réponses :



0
votes

Vous pouvez le faire avec Fournisseurs de séquence de groupe , par exemple: xxx

non pas testé, mais je pense que cela fonctionnerait


0 commentaires

20
votes

Il existe des solutions encore plus simples que d'écrire un validateur personnalisé. Le plus facile de tous est probablement la contrainte d'expression: xxx pré>

Vous pouvez également ajouter une méthode de validation à votre classe et l'annoter avec la contrainte de rappel: P>

/**
 * @Assert\Callback
 */
public function validateFields(ExecutionContextInterface $context)
{
    if ('' === $this->fieldA && '' === $this->fieldB && '' === $this->fieldC) {
        $context->addViolation('At least one of the fields must be filled');
    }
}


1 commentaires

Je pense que cette réponse est meilleure et plus simple.