Bonjour,

j'ai beau essayé les méthodes de la doc aucune n'a l'air de
fonctionner.

mon souci est le suivant :

j'ai un formulaire contenant les champs suivants :

            ->add('strength', 'choice', array('choices' => $nombres))
            ->add('constitution', 'choice', array('choices' =>
$nombres))
            ->add('size', 'choice', array('choices' => $nombres))
            ->add('intelligence', 'choice', array('choices' =>
$nombres))
            ->add('power', 'choice', array('choices' => $nombres))
            ->add('dexterity', 'choice', array('choices' => $nombres))
            ->add('charisme', 'choice', array('choices' => $nombres))

je ne veux pas que le formulaire soit validé si la somme de ces 7
champs est différente de 90 (le visiteur choisit entre 3 et 18 pour
chaque champ)

j'ai déjà une solution en javascript mais j'aurai aimé ne pas
l'utiliser car si quelqu'un désactive le javascript de son navigateur,
je me retrouve avec une faille. (même si l'ensemble du site
fonctionnera moins bien sans javascript lol)

j'étais donc content d'avoir trouvé dans la doc :

/**
     * Set totalAttributs
     *
     * @param integer $totalAttributs
     */
    public function setTotalAttributs()
    {
        $this->totalAttributs = $this->strength + $this->constitution
+ $this->charisme +
                $this->dexterity + $this->power + $this->intelligence
+ $this->size;
    }

    /**
     * @Assert\True(message = "Vous avez mis plus ou moins  de 90
points dans vos attributs")
     */
    public function isDifferent90()
    {
        return $this->totalAttributs != 90;
    }

c'est mon adaptation de ce que j'ai lu là :

http://symfony.com/doc/current/book/validation.html#getters

je fais un set totalAttributs dans mon controller avant de valider le
formulaire et je n'ai pas d'erreur mais je n'ai pas non plus de
validation puisque je peux entrer des attributs dont la somme est !=
de 90...

pour info mon bout de controller

$personnage = new Personnage();
        $request = $this->getRequest();
        $form = $this->createForm(new FirstStepType(), $personnage);
        $form->bindRequest($request);
        $personnage->setTotalAttributs();
        $personnage->setLifeAndEnergyWithStrengthConstAndPower();
        $personnage->setCreatedAt(new \Datetime());

        if ($form->isValid()) {...

est-ce quelqu'un voit une façon de faire propre à symfony2 ou je dois
me rabattre sur du javascript uniquement ?

merci d'avance

-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à symfony-fr@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
symfony-fr+unsubscr...@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à