IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Appliquer erreur sur sous formulaire dans contrainte sur type


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2016
    Messages : 9
    Par défaut Appliquer erreur sur sous formulaire dans contrainte sur type
    Bonjour

    J'ai deux types
    TicketType.php
    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
     
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titre', TextType::class, [
            ])
            ->add('application', EntityType::class, [
                'class' => 'AppBundle;Application'
            ])
            ->add('details', CollectionType::class, [
                'label' => false,
                'entry_type' => DetailsType::class,
                'allow_add' => true,
                'allow_delete' => true,
            ])
        ;
    }
     
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'AppBundle\Entity\Ticket',
            'constraints'=>new Callback(array('callback'=>function($ticket,ExecutionContextInterface $context){
                    if($ticket->getApplication()) {
                        foreach ($ticket->getDetails() as $detail) {
                            if ($detail->getNomServeur()) {
                                $serveurTrouve = false;
     
                                // Controle pour vérifier que les serveurs saisie sont des serveurs de l'application
                                foreach ($ticket->getApplication()->getServeurs() as $serveur) {
                                    if ($serveur->getName() === $detail->getNomServeur()) {
                                        $serveurTrouve = true;
                                    }
                                }
                                if(!$serveurTrouve) {
                                    $context->buildViolation('Un des serveur n'est pas dans l\'application')
                                        ->atPath('application')
                                        ->addViolation()
                                    ;
                                }
                            }
                        }
                    }
                })),
            ]);
    }
    et DetailsType.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('description', TextType::class, [
            ])
            ->add('nomServeur', TextType::class, [
            ])
        ;
    }
    cela fonctionne très bien mais l'erreur est mise dans ce cas sur le champ application
    et je souhaiterais qu'elle soit mise sur le champ nomServeur du détail en anomalie

    J'ai bien essayé de remplacer atPath('application') par atPath('details.0.nomServeur')
    Mais ça ne fonctionne pas

    Sinon dans l'autre sens, mettre la contrainte sur DetailsType mais je ne peux pas accéder au ticket par $detail->getTicket (pas encore rempli dans le HandleRequest)

    Merci d'avance

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    tu peux faire un callback validation que tu attacheras avec le champs voulu (atpath....)

    https://symfony.com/doc/current/refe.../Callback.html

Discussions similaires

  1. Reference a un sous formulaire dans un code sur access
    Par ensascience dans le forum IHM
    Réponses: 5
    Dernier message: 28/09/2015, 10h47
  2. [AC-2003] Dlookup sur sous-formulaire avec critère sur formulaire principal
    Par Soulq dans le forum VBA Access
    Réponses: 13
    Dernier message: 16/07/2009, 09h43
  3. Réponses: 7
    Dernier message: 07/06/2007, 10h22
  4. Réponses: 2
    Dernier message: 11/07/2006, 13h01
  5. Action sur sous-formulaire filtré
    Par thevenix dans le forum IHM
    Réponses: 4
    Dernier message: 20/06/2005, 00h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo