10
votes

La validation de formulaire ignore la valeur vide

FAQUETYPE:

    $branch = new Branch();
    $form = $this->createForm(new BranchFormType(), $branch);

    if ($request->isMethod('POST')) {

        $form->bindRequest($request);

        if ($form->isValid()) {
            $em->persist($branch);
            $em->flush();

            return $this->redirect($this->generateUrl('view_branch'));
        }
    }

    return $this->render('MyMainBundle:Branch:create.html.twig', array(
                'form' => $form->createView()
            ));


5 commentaires

nullable = faux est une contrainte de doctrine, isvalid n'effectue pas de chèques sur le côté de la doctrine (la doctrine ne sait pas comment valider en entité), vérifie uniquement les assertions (NotBlank ...) à partir du composant de validateur.


Je suppose qu'il pourrait y avoir un problème avec une cascade persist. Disons que votre entité de branche est liée à une autre entité (avec Cascade Persist) qui ont également un champ de «nom». Dans votre cas si vous définissez de la valeur pour le champ "Nom" de votre entreprise de branche mais ne définissez pas le champ "Nom" dans une entité associée, vous avez obtenu la même erreur que celle décrite. Alors pourriez-vous vous assurer que vos relations ne causent pas cette erreur? Je pourrais peut-être dire plus si vous postez votre définition de l'entité de branche


Vous avez peut-être raison, dans la barre d'outils SF, une erreur d'entité est une erreur d'entité, comme "les enfants désignent le champ de la propriété de la propriété Kloppe \ SMSBundle \ Entity \ Utilisateur d'utilisateur qui n'existe pas." Voici la définition d'entité dpaste.com/879513


Je pense que vous avez besoin requis = true dans le formulaire


Votre définition de la branche a-t-elle le getBranchanch () et setbranch () méthodes définies?


5 Réponses :


2
votes

Utilisez NotBlank validation contrainte


4 commentaires

J'ai cette contrainte, mais je reçois ce message.


Votre fichier validation.yml est-il nommé correctement (minuscule)?


Hmm. Et quel est le chemin complet?


\ src \ my \ MainBundle \ Ressources \ config



0
votes

Essayez d'ajouter un NotNull Contrainte en plus du NotBlank One.


0 commentaires

2
votes

On dirait que le fichier de validation est dans le dossier droit: xxx pré>

Assurez-vous que vous n'utilisez pas de groupes de validation? p>

Quoi qu'il en soit, j'utiliserais Affirmer code> pour voir s'il y a quelque chose qui ne va pas avec ce fichier de validation: p>

Activer les annotations: strong> p>

// ...
use My\MainBundle\Entity\Branch;

public function indexAction()
{
    $branch = new Branch();

    $branch->setName('');

    $validator = $this->get('validator');
    $errors = $validator->validate($branch);

    if (count($errors) > 0) {
        return new Response(print_r($errors, true));
    } else {
        return new Response('Entity is valid');
    }
}


0 commentaires

1
votes

Vous devez vérifier si le service de validation a aggravé votre mappage:

$validator = $this->container->get('validator'); // do it your way

$metadata = $validator->getMetadataFactory()->getClassMetaData('My\\MainBundle\\Entity\\Branch');

var_dump($metadata);


1 commentaires

Juste pour ajouter sur cette bonne réponse @florian, que l'on peut donc regarder les propriétés contraintes comme ceci: $ métadata-> getconstraineProperties () ou consultez une propriété particulière comme ceci var_dump ($ Metadata-> GetMembermettadatas ('Nom')) Pour l'exemple de la propriété nom . Voir symfony \ composant \ validator \ mappage \ classmetadata .



0
votes

Avez-vous essayé de nettoyer le cache Dev depuis la création de validation.yml? J'avais une cause similaire de frustration, et cela a tout corrigé pour moi.


0 commentaires