Bonjour à tous,

J'ai un formulaire Symfony2 avec deux dates, une de début une de fin :

Nom : assert.png
Affichages : 147
Taille : 9,3 Ko

Pour cela, j'ai utilisé un simple formulaire. Cependant, je souhaiterais vérifier que la fin de prise en charge, si elle est existante, soit supérieure ou égale à la date de début. Pour cela, il faut forcément que je récupère les données envoyées, il faut donc que je passe par un CallBack(). Avec mes recherches, j'ai vu qu'on pouvait utiliser Assert pour ça, au sein du formulaire (je ne souhaite pas réaliser ce contrôle dans l'entity, mais directement dans la class du formulaire).

J'ai essayé ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
<?php
 
namespace LogicielBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContext;
 
/**
 * @Assert\Callback(methods={"validate"})
 */
class LotVersionType extends AbstractType
{
 
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('date_debut', 'date', array(
                'label' => 'Début de prise en charge',
                'format' => 'dd / MMMM / yyyy'
            ))
            ->add('date_fin', 'date', array(
                'label' => 'Fin de prise en charge',
                'format' => 'dd / MMMM / yyyy',
                'required' => false
            ))
        ;
    }
 
    public function validate(ExecutionContext  $context)
    {
         exit;
    }
 
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'label' => false,
            'data_class' => 'LogicielBundle\Entity\LotVersion',
            'intention' => $this->getName() . '_token'
        ));
    }
 
    /**
     * @return string
     */
    public function getName()
    {
        return 'logiciel_lot_version_form';
    }
}
... mais lors de la validation, exit() n'est pas executé, je suppose donc que le callback ne fonctionne pas.

Merci d'avance à ceux qui pourront m'aider