Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony3] Could not load type (form)

    24 juillet 2017 à 15:01:43

    Bonjour,

    Je buggue depuis des heures, j'ai relu mon code dans tous les sens, je n'arrive pas à trouver l'erreur... C'est sans doute une connerie, mais là j'ai besoin d'yeux frais!

    GeneralType:

    <?php
    
    namespace Exp\Diagnostic\DrippComplementaireBundle\Form\Type;
    
    use Exp\CommunBundle\Form\DataTransformer\StringToDateTransformer;
    use Exp\Diagnostic\CoreBundle\Entity\Liste\Laboratoire;
    use Exp\Diagnostic\CoreBundle\Form\Type\DiagnosticGeneralType;
    use Exp\Diagnostic\DrippComplementaireBundle\Entity\DrippComplementaire;
    use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type;
    use Symfony\Component\Form\Extension\Core\Type\CollectionType;
    use Symfony\Component\Form\Extension\Core\Type\TextareaType;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\Form\FormEvent;
    use Symfony\Component\Form\FormEvents;
    
    class GeneralType extends AbstractType
    {
     
        
        
        public function buildForm(FormBuilderInterface $builder, array $options)
        {        
            $builder
                ->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'addDiagnosticGeneralForm'])
                ->add('appareil')
                ->add('occupant')
                ->add('remarques', TextareaType::class, array('required' => false))
                ->add('description', TextareaType::class, array('required' => false))
                ->add('typesGestions', CollectionType::class, array(
                    'entry_type' => DrippComplementaireTypeGestionType::class,
                    'allow_add'    => true,
                    'allow_delete' => true,
                    'by_reference' => false,
                    'prototype' => true,
                ))
                ->add('avisOperateur', Type\ChoiceType::class, ['label' => "Avis de l'opérateur", 'choices' => ['Hébergement'=>'Hébergement',"Eloignement"=>"Eloignement", 'Sans objet' => 'Sans objet'], 'required' => false])
                ->add('presenceEnfants', Type\CheckboxType::class, ['label' => "Fréquenté par des enfants ?", 'required' => false])
                ->add('anneeConstruction', null, array('label' => "Année de construction", 'required' => false))
                ->add('drippComplementaireNegatif', Type\CheckboxType::class, ['label' => "DrippComplementaire Négatif ?", 'required' => false])
                ->add('motifsDrippComplementaireNegatif', TextareaType::class, ['label' => "Motifs :", 'required' => false])
                ->add('prelevementLabo', EntityType::class, [
                    'label' => 'Laboratoire',
                    'placeholder' => '-- Aucun prélèvement --',
                    'class' => Laboratoire::class,
                    'choice_label' => 'libelle',
                     'required' => false
                ])
                ->add(
                    $builder
                        ->create('prelevementDateEnvoi', TextType::class, ['label' => 'Date d\'envoi','attr' => ['data-expdate' => ''], 'required' => false])
                        ->addModelTransformer(new StringToDateTransformer())
                )
                ->add(
                    $builder
                        ->create('prelevementDateReception', TextType::class, ['label' => 'Date de réception', 'attr' => ['data-expdate' => ''], 'required' => false])
                        ->addModelTransformer(new StringToDateTransformer())
                )
                ->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'addCustomFields'])
                ->getForm();
            
        }
    
        /**
         * @param  FormEvent $event
         */
        public function addDiagnosticGeneralForm(FormEvent $event)
        {
            $event
                ->getForm()
                ->add('diagnostic', DiagnosticGeneralType::class)
            ;
        }
        
         public function addCustomFields(FormEvent $event)
        {
            $form = $event->getForm();
            $drippComplementaire = $event->getData();
            $parties= $drippComplementaire->getDiagnostic()->getVisite()->getDossier()->getParties();
            
            if ('parties_communes' !== $parties){
                $form->add('presenceFemmeEnceinte', Type\CheckboxType::class, ['label' => "Fréquenté par une femme enceinte ?", 'required' => false])
                     ->add('statutOccupant', Type\ChoiceType::class, ['choices' => array_flip(DrippComplementaire::$statutOccupantList), 'required' => false])
                     ->add('nombreAdultes')
                     ->add('nombreMineursHabitant')
                     ->add('nombreMineursFrequentant')
                     ->add('datesNaissanceEnfants', Type\TextareaType::class, array('required' => false));
                
            }
           
        }
    }
    

    DrippComplementaireTypeGestionType:

    <?php
    
    namespace Exp\Diagnostic\DrippComplementaireBundle\Form\Type;
    
    use Exp\Diagnostic\DrippComplementaireBundle\Entity\DrippComplementaireTypeGestion;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    
    class DrippComplementaireTypeGestionType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('libelle', Type\ChoiceType::class, array(
                        'choices' => array(
                            'Propriétaire' => 'Propriétaire',
                            'Syndic' => 'Syndic',
                            'Mono propriétaire' => 'Mono propriétaire',
                            'Copropriétaire' => 'Copropriétaire',
                            'Gérant' => 'Gérant',
                            'Syndic bénévole' => 'Syndic bénévole',
                            'Gestionnaire' => 'Gestionnaire',
                            'Indivision' => 'Indivision',
                        )))
                ->add('coordonnees', Type\TextareaType::class, [ 'required' => false])
                ->getForm()
            ;
        }
    
        /**
         * {@inheritdoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefault('data_class', DrippComplementaireTypeGestion::class);
        }    
    }

    Erreur 500 : 

    Could not load type "Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType"

    Je ne vais pas vous mentir, tout ce qui a trait au DrippComplementaire est pour beaucoup une copie du Dripp (demande du client).

    Trouvez-vous l'oubli/erreur?

    Pour info, j'ai vidé les caches.

    Merci d'avance,

    Emma



    -
    Edité par EmmaKarena 24 juillet 2017 à 15:02:08

    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2017 à 15:30:47

      Salut !

      Est-ce que tu pourrais nous donner un peu plus du message d'erreur ? Il doit notamment y avoir le fichier dans lequel l'erreur survient, ce serait pratique de ne pas avoir à tester directement ton code.

      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2017 à 15:34:44

        Hello,

        Voici:

        InvalidArgumentException
        Symfony\Component\Form\Exception\InvalidArgumentException:
        Could not load type "Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType"
        
          at vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php:87
          at Symfony\Component\Form\FormRegistry->getType('Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType')
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:74)
          at Symfony\Component\Form\FormFactory->createNamedBuilder('__name__', 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', null, array('required' => true, 'label' => '__name__label__', 'block_name' => 'entry'))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php:106)
          at Symfony\Component\Form\FormBuilder->create('__name__', 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', array('required' => true, 'label' => '__name__label__', 'block_name' => 'entry'))
             (vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php:39)
          at Symfony\Component\Form\Extension\Core\Type\CollectionType->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'prototype_data' => null, 'prototype_name' => '__name__', 'delete_empty' => false, 'attr' => array(), 'data_class' => null, 'empty_data' => object(Closure), 'by_reference' => false, 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array(), 'allow_add' => true, 'allow_delete' => true, 'prototype' => true, 'entry_type' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', 'entry_options' => array('block_name' => 'entry')))
             (vendor/symfony/symfony/src/Symfony/Component/Form/ResolvedFormType.php:126)
          at Symfony\Component\Form\ResolvedFormType->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'prototype_data' => null, 'prototype_name' => '__name__', 'delete_empty' => false, 'attr' => array(), 'data_class' => null, 'empty_data' => object(Closure), 'by_reference' => false, 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array(), 'allow_add' => true, 'allow_delete' => true, 'prototype' => true, 'entry_type' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', 'entry_options' => array('block_name' => 'entry')))
             (vendor/symfony/symfony/src/Symfony/Component/Form/Extension/DataCollector/Proxy/ResolvedTypeDataCollectorProxy.php:102)
          at Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'prototype_data' => null, 'prototype_name' => '__name__', 'delete_empty' => false, 'attr' => array(), 'data_class' => null, 'empty_data' => object(Closure), 'by_reference' => false, 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array(), 'allow_add' => true, 'allow_delete' => true, 'prototype' => true, 'entry_type' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', 'entry_options' => array('block_name' => 'entry')))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:80)
          at Symfony\Component\Form\FormFactory->createNamedBuilder('typesGestions', object(ResolvedTypeDataCollectorProxy), null, array('entry_type' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false, 'prototype' => true))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php:106)
          at Symfony\Component\Form\FormBuilder->create('typesGestions', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CollectionType', array('entry_type' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\DrippComplementaireTypeGestionType', 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false, 'prototype' => true))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php:269)
          at Symfony\Component\Form\FormBuilder->resolveChildren()
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php:215)
          at Symfony\Component\Form\FormBuilder->getForm()
             (src/Exp/Diagnostic/DrippComplementaireBundle/Form/Type/GeneralType.php:63)
          at Exp\Diagnostic\DrippComplementaireBundle\Form\Type\GeneralType->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'by_reference' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'attr' => array(), 'data' => object(DrippComplementaire), 'data_class' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Entity\\DrippComplementaire', 'empty_data' => object(Closure), 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array()))
             (vendor/symfony/symfony/src/Symfony/Component/Form/ResolvedFormType.php:126)
          at Symfony\Component\Form\ResolvedFormType->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'by_reference' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'attr' => array(), 'data' => object(DrippComplementaire), 'data_class' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Entity\\DrippComplementaire', 'empty_data' => object(Closure), 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array()))
             (vendor/symfony/symfony/src/Symfony/Component/Form/Extension/DataCollector/Proxy/ResolvedTypeDataCollectorProxy.php:102)
          at Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy->buildForm(object(FormBuilder), array('block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'translation_domain' => null, 'auto_initialize' => true, 'trim' => true, 'required' => true, 'property_path' => null, 'mapped' => true, 'by_reference' => true, 'inherit_data' => false, 'compound' => true, 'method' => 'POST', 'action' => '', 'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.', 'error_mapping' => array(), 'invalid_message' => 'This value is not valid.', 'invalid_message_parameters' => array(), 'allow_extra_fields' => false, 'extra_fields_message' => 'This form should not contain extra fields.', 'csrf_protection' => true, 'csrf_field_name' => '_token', 'csrf_message' => 'The CSRF token is invalid. Please try to resubmit the form.', 'csrf_token_manager' => object(CsrfTokenManager), 'csrf_token_id' => null, 'attr' => array(), 'data' => object(DrippComplementaire), 'data_class' => 'Exp\\Diagnostic\\DrippComplementaireBundle\\Entity\\DrippComplementaire', 'empty_data' => object(Closure), 'error_bubbling' => true, 'label_attr' => array(), 'upload_max_size_message' => object(Closure), 'validation_groups' => null, 'constraints' => array()))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:80)
          at Symfony\Component\Form\FormFactory->createNamedBuilder('general', object(ResolvedTypeDataCollectorProxy), object(DrippComplementaire), array('data' => object(DrippComplementaire)))
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:58)
          at Symfony\Component\Form\FormFactory->createBuilder('Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\GeneralType', object(DrippComplementaire), array())
             (vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php:30)
          at Symfony\Component\Form\FormFactory->create('Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\GeneralType', object(DrippComplementaire), array())
             (vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php:331)
          at Symfony\Bundle\FrameworkBundle\Controller\Controller->createForm('Exp\\Diagnostic\\DrippComplementaireBundle\\Form\\Type\\GeneralType', object(DrippComplementaire))
             (src/Exp/Diagnostic/DrippComplementaireBundle/Controller/GeneralController.php:17)
          at Exp\Diagnostic\DrippComplementaireBundle\Controller\GeneralController->generalAction(object(Request), '1')
          at call_user_func_array(array(object(GeneralController), 'generalAction'), array(object(Request), '1'))
             (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:153)
          at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
             (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php:68)
          at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
             (vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:171)
          at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
             (web/app_dev.php:11)
        

        Merci.

        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2017 à 9:39:07

          Un petit UP svp, je suis vraiment bloquée...
          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2017 à 9:56:31

            Salut,
            Tu es dans le même espace de nommage, tu n'as donc pas besoins de faire un use de ta class "DrippComplementaireTypeGestionType"

            -
            Edité par m_12_u 27 juillet 2017 à 9:58:25

            • Partager sur Facebook
            • Partager sur Twitter
              27 juillet 2017 à 10:07:10

              Hello,

              J'ai retiré la ligne (DrippComplementaireTypeGestionType)

              use Exp\Diagnostic\DrippComplementaireBundle\Entity\DrippComplementaireTypeGestion;

              et/ou la ligne (GeneralType)

              use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType;

              ça ne change rien...

              Emma

              • Partager sur Facebook
              • Partager sur Twitter
                27 juillet 2017 à 10:08:12

                Le nom

                de tes dossiers correspondent t'ils exactement à ton espace de nommage ?

                PS : la class model est dans le dossier entity, là il te faut conserver le use pour celle la.
                useExp\Diagnostic\DrippComplementaireBundle\Entity\DrippComplementaireTypeGestion;

                // PAS besoins : use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType;

                - Exp
                 - Diagnostic
                  - DrippComplementaireBundle
                   - Form
                    - Type : Ici la class

                -
                Edité par m_12_u 27 juillet 2017 à 10:15:34

                • Partager sur Facebook
                • Partager sur Twitter
                  27 juillet 2017 à 10:44:48

                  Je regarde et reviens ASAP ;)

                  -
                  Edité par m_12_u 27 juillet 2017 à 10:57:14

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 juillet 2017 à 10:56:51

                    EmmaKarena a écrit:

                    Lol, ok, merci :)


                    As tu renseignée ton form type dans un service(service.yml) quelque par ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 juillet 2017 à 11:02:16

                      Non, mais dans le DrippBundle non plus, et là le formulaire de type de gestion fonctionne...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 juillet 2017 à 11:04:34

                        Question vraiment toute bête... ton bundle est renseigné dans le kernel ? (dsl, mais je cherche à rattacher les wagons)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 juillet 2017 à 11:14:46

                          Oui, bien sûr.

                          D'ailleurs, dans la liste de mes diags, il apparaît, la route fnctionne, toussa, c'est juste ce sous-formulaire qui plante... (la page s'ouvrait avant que je l'ajoute...)

                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 juillet 2017 à 11:20:18

                            Tu peux me montrer ton form sur lequel ça fonction stp. J'ai peut-être une piste mais pas de précipitation :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              27 juillet 2017 à 11:36:12

                              GeneralType:
                              <?php
                              
                              namespace Exp\Diagnostic\DrippBundle\Form\Type;
                              
                              use Exp\CommunBundle\Form\DataTransformer\StringToDateTransformer;
                              use Exp\Diagnostic\CoreBundle\Entity\Liste\Laboratoire;
                              use Exp\Diagnostic\CoreBundle\Form\Type\DiagnosticGeneralType;
                              use Exp\Diagnostic\DrippBundle\Entity\Dripp;
                              use Exp\Diagnostic\DrippBundle\Form\Type\DrippTypeGestionType;
                              use Symfony\Bridge\Doctrine\Form\Type\EntityType;
                              use Symfony\Component\Form\AbstractType;
                              use Symfony\Component\Form\Extension\Core\Type;
                              use Symfony\Component\Form\Extension\Core\Type\CollectionType;
                              use Symfony\Component\Form\Extension\Core\Type\TextareaType;
                              use Symfony\Component\Form\Extension\Core\Type\TextType;
                              use Symfony\Component\Form\FormBuilderInterface;
                              use Symfony\Component\Form\FormEvent;
                              use Symfony\Component\Form\FormEvents;
                              
                              class GeneralType extends AbstractType
                              {
                               
                                  
                                  
                                  public function buildForm(FormBuilderInterface $builder, array $options)
                                  {        
                                      $builder
                                          ->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'addDiagnosticGeneralForm'])
                                          ->add('appareil')
                                          ->add('occupant')
                                          ->add('remarques', TextareaType::class, array('required' => false))
                                          ->add('description', TextareaType::class, array('required' => false))
                                          ->add('typesGestions', CollectionType::class, array(
                                              'entry_type' => DrippTypeGestionType::class,
                                              'allow_add'    => true,
                                              'allow_delete' => true,
                                              'by_reference' => false,
                                              'prototype' => true,
                                          ))
                                          ->add('avisOperateur', Type\ChoiceType::class, ['label' => "Avis de l'opérateur", 'choices' => ['Hébergement'=>'Hébergement',"Eloignement"=>"Eloignement", 'Sans objet' => 'Sans objet'], 'required' => false])
                                          ->add('presenceEnfants', Type\CheckboxType::class, ['label' => "Fréquenté par des enfants ?", 'required' => false])
                                          ->add('anneeConstruction', null, array('label' => "Année de construction", 'required' => false))
                                          ->add('drippNegatif', Type\CheckboxType::class, ['label' => "Dripp Négatif ?", 'required' => false])
                                          ->add('motifsDrippNegatif', TextareaType::class, ['label' => "Motifs :", 'required' => false])
                                          ->add('prelevementLabo', EntityType::class, [
                                              'label' => 'Laboratoire',
                                              'placeholder' => '-- Aucun prélèvement --',
                                              'class' => Laboratoire::class,
                                              'choice_label' => 'libelle',
                                               'required' => false
                                          ])
                                          ->add(
                                              $builder
                                                  ->create('prelevementDateEnvoi', TextType::class, ['label' => 'Date d\'envoi','attr' => ['data-expdate' => ''], 'required' => false])
                                                  ->addModelTransformer(new StringToDateTransformer())
                                          )
                                          ->add(
                                              $builder
                                                  ->create('prelevementDateReception', TextType::class, ['label' => 'Date de réception', 'attr' => ['data-expdate' => ''], 'required' => false])
                                                  ->addModelTransformer(new StringToDateTransformer())
                                          )
                                          ->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'addCustomFields'])
                                          ->getForm();
                                      
                                  }
                              
                                  /**
                                   * @param  FormEvent $event
                                   */
                                  public function addDiagnosticGeneralForm(FormEvent $event)
                                  {
                                      $event
                                          ->getForm()
                                          ->add('diagnostic', DiagnosticGeneralType::class)
                                      ;
                                  }
                                  
                                   public function addCustomFields(FormEvent $event)
                                  {
                                      $form = $event->getForm();
                                      $dripp = $event->getData();
                                      $parties= $dripp->getDiagnostic()->getVisite()->getDossier()->getParties();
                                      
                                      if ('parties_communes' !== $parties){
                                          $form->add('presenceFemmeEnceinte', Type\CheckboxType::class, ['label' => "Fréquenté par une femme enceinte ?", 'required' => false])
                                               ->add('statutOccupant', Type\ChoiceType::class, ['choices' => array_flip(Dripp::$statutOccupantList), 'required' => false])
                                               ->add('nombreAdultes')
                                               ->add('nombreMineursHabitant')
                                               ->add('nombreMineursFrequentant')
                                               ->add('datesNaissanceEnfants', Type\TextareaType::class, array('required' => false));
                                          
                                      }
                                     
                                  }
                              }
                              

                              DrippTypeGestionType:

                              <?php
                              
                              namespace Exp\Diagnostic\DrippBundle\Form\Type;
                              
                              use Exp\Diagnostic\DrippBundle\Entity\DrippTypeGestion;
                              use Symfony\Component\Form\AbstractType;
                              use Symfony\Component\Form\Extension\Core\Type;
                              use Symfony\Component\Form\FormBuilderInterface;
                              use Symfony\Component\OptionsResolver\OptionsResolver;
                              
                              class DrippTypeGestionType extends AbstractType
                              {
                                  public function buildForm(FormBuilderInterface $builder, array $options)
                                  {
                                      $builder
                                          ->add('libelle', Type\ChoiceType::class, array(
                                                  'choices' => array(
                                                      'Propriétaire' => 'Propriétaire',
                                                      'Syndic' => 'Syndic',
                                                      'Mono propriétaire' => 'Mono propriétaire',
                                                      'Copropriétaire' => 'Copropriétaire',
                                                      'Gérant' => 'Gérant',
                                                      'Syndic bénévole' => 'Syndic bénévole',
                                                      'Gestionnaire' => 'Gestionnaire',
                                                      'Indivision' => 'Indivision',
                                                  )))
                                          ->add('coordonnees', Type\TextareaType::class, [ 'required' => false])
                                          ->getForm()
                                      ;
                                  }
                              
                                  /**
                                   * {@inheritdoc}
                                   */
                                  public function configureOptions(OptionsResolver $resolver)
                                  {
                                      $resolver->setDefault('data_class', DrippTypeGestion::class);
                                  }    
                              }



                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juillet 2017 à 11:57:18

                                Peux tu essayer de créer une instance de ta classe 'DrippComplementaireTypeGestionType'(new DrippComplementaireTypeGestionType()) à l'extérieur de ton form type (juste pour essai). C'est histoire de confirmer que c'est bien le chargement par l'autoload qui plante, ce qui confirmerait que le cache n'est pas vidé correctement. Dans ce cas, fais un violent 'rm -Rf cache/*' de ton répertoire de cache et pas un "cache:clear ou cache:warmup". Là pour moi tous semble ok et je ne vois que le cache...

                                -
                                Edité par m_12_u 27 juillet 2017 à 11:59:42

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 juillet 2017 à 12:38:01

                                  Code:

                                  Exécution :
                                  Après rm -rf var/cache
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juillet 2017 à 16:33:03

                                    Je ne comprend pas trop là. Je ne vois nul par un :
                                    new DrippComplementaireTypeGestionType()
                                    J'ai l'impression que tu passes par un service pour charger ton formtype.... non ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 juillet 2017 à 19:36:11

                                      Au temps pour moi, je n'avais pas bien lu:

                                       $drippComplementaire = $this->find('ExpDiagnosticDrippComplementaireBundle:DrippComplementaire', $idDrippComplementaire);
                                              $this->keepOriginalCollection($drippComplementaire->getDiagnostic()->getRedactions(), 'redactions');
                                              $this->keepOriginalCollection($drippComplementaire->getTypesGestions(), 'types_gestion');
                                              $form = $this->createForm(DrippComplementaireTypeGestionType::class, $drippComplementaire->getTypesGestions())->handleRequest($request);

                                      Même erreur:

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        28 juillet 2017 à 15:39:30

                                        lol,
                                        Tu fais une instance de ta class avec le service "createForm". Il faut juste faire un  "newDrippComplementaireTypeGestionType()" pour comprendre. Sans service, sans rien. Pour le moment le service nous dit qu'il ne peut pas charger cette class car il l'a connaît pas. 
                                        Ce que tu fais en faisant "DrippComplementaireTypeGestionType::class" c'est juste passer le nom d'une classe à un service, à aucun moment tu l'instancies explicitement.
                                        Sans ça..on pourra pas avancer ;)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          31 juillet 2017 à 9:16:30

                                          Je ne suis pas dans un service, je suis dans mon controller. 

                                          Où veux-tu que je mettes mon code, si c'est pas dans le controller?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            31 juillet 2017 à 20:45:25

                                            n'importe où, oui un contrôler fera l'affaire. :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              1 août 2017 à 9:03:50

                                              <?php
                                              
                                              namespace Exp\Diagnostic\DrippComplementaireBundle\Controller;
                                              
                                              use Exp\CommunBundle\Controller\AbstractController;
                                              use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\DrippComplementaireTypeGestionType;
                                              use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\GeneralType;
                                              use Exp\Diagnostic\DrippComplementaireBundle\Form\Type\ImportDiagnosticType;
                                              use Symfony\Component\HttpFoundation\Request;
                                              use Symfony\Component\HttpFoundation\Response;
                                              
                                              class GeneralController extends AbstractController
                                              {
                                                  public function generalAction(Request $request, $idDrippComplementaire)
                                                  {       
                                                      $drippComplementaire = $this->find('ExpDiagnosticDrippComplementaireBundle:DrippComplementaire', $idDrippComplementaire);
                                                      $this->keepOriginalCollection($drippComplementaire->getDiagnostic()->getRedactions(), 'redactions');
                                                      $this->keepOriginalCollection($drippComplementaire->getTypesGestions(), 'types_gestion');
                                                      $test = new DrippComplementaireTypeGestionType();

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                3 août 2017 à 7:28:09

                                                Tu peux montrer ton composer stp ? J'ai vraiment l'impression que c'est une histoire ne namespace. Tu as renseigné ton namespace dans le composer du projet ?
                                                "Exp\\Diagnostic\\DrippComplementaireBundle\\" : "src/"

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  3 août 2017 à 15:57:03

                                                  J'ai mis le problème entre parenthèses jusqu'au retour du chef de projet. Merci.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    3 août 2017 à 16:06:00

                                                    m_12_u a écrit:

                                                    Tu peux montrer ton composer stp ? J'ai vraiment l'impression que c'est une histoire ne namespace. Tu as renseigné ton namespace dans le composer du projet ?

                                                    "Exp\\Diagnostic\\DrippComplementaireBundle\\" : "src/"

                                                    Si c'est vraiment ça, évitons plutôt de spécifier des namespaces précis dans composer.json.

                                                    -
                                                    Edité par Ymox 3 août 2017 à 16:06:46

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      3 août 2017 à 16:27:45

                                                      Ymox a écrit:

                                                      m_12_u a écrit:

                                                      Tu peux montrer ton composer stp ? J'ai vraiment l'impression que c'est une histoire ne namespace. Tu as renseigné ton namespace dans le composer du projet ?

                                                      "Exp\\Diagnostic\\DrippComplementaireBundle\\" : "src/"

                                                      Si c'est vraiment ça, évitons plutôt de spécifier des namespaces précis dans composer.json.

                                                      -
                                                      Edité par Ymox il y a 17 minutes

                                                      Ce n'est pas le cas. Je suis passée à un autre sujet, mais pour info, voici mon composer.json (*** = nom du client):

                                                      {
                                                          "name": "***/symfony",
                                                          "type": "project",
                                                          "description": "*** symfony app",
                                                          "autoload": {
                                                              "psr-4": {
                                                                  "": "src/"
                                                              },
                                                              "classmap": [
                                                                  "app/AppKernel.php",
                                                                  "app/AppCache.php",
                                                                  "src/Cacofony/MpdfBundle/Mpdf/mpdf.php",
                                                                  "src/Cacofony/MpdfBundle/Mpdf/classes"
                                                              ]
                                                          },
                                                          "require": {
                                                              "php": ">=7.0",
                                                              "symfony/symfony": "3.3.*",
                                                              "twig/twig": "^1.0||^2.0",
                                                              "doctrine/orm": "^2.5",
                                                              "doctrine/doctrine-bundle": "^1.6",
                                                              "symfony/assetic-bundle": "v2.8.1",
                                                              "symfony/swiftmailer-bundle": "v2.4.2",
                                                              "symfony/monolog-bundle": "^3.0",
                                                              "sensio/distribution-bundle": "^5.0",
                                                              "sensio/framework-extra-bundle": "^3.0.2",
                                                              "incenteev/composer-parameter-handler": "~2.0",
                                                              "twig/extensions": "v1.3.*",
                                                              "friendsofsymfony/user-bundle": "~2.0",
                                                              "stof/doctrine-extensions-bundle": "~1.1@dev",
                                                              "fr3d/ldap-bundle": "v3.0.0",
                                                              "PHPOffice/PHPExcel": "1.8.1",
                                                              "guzzlehttp/guzzle": "6.2.*",
                                                              "pinano/select2-bundle": "4.0.3"
                                                          },
                                                          "require-dev": {
                                                              "sensio/generator-bundle": "^3.0",
                                                              "symfony/phpunit-bridge": "^2.7",
                                                              "friendsofphp/php-cs-fixer": "*",
                                                              "phpunit/phpunit": "4.*"
                                                          },
                                                          "scripts": {
                                                              "symfony-scripts": [
                                                                  "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
                                                                  "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
                                                                  "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
                                                                  "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
                                                              ],
                                                              "post-install-cmd": [
                                                                  "@symfony-scripts"
                                                              ],
                                                              "post-update-cmd": [
                                                                  "@symfony-scripts"
                                                              ]
                                                          },
                                                          "config": {
                                                              "platform": {
                                                                  "php": "7.0"
                                                              }
                                                          },
                                                          "extra": {
                                                              "symfony-app-dir": "app",
                                                              "symfony-bin-dir": "bin",
                                                              "symfony-var-dir": "var",
                                                              "symfony-web-dir": "web",
                                                              "symfony-tests-dir": "tests",
                                                              "symfony-assets-install": "relative",
                                                              "incenteev-parameters": {
                                                                  "file": "app/config/parameters.yml"
                                                              }
                                                          }
                                                      }
                                                      




                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      [Symfony3] Could not load type (form)

                                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                      • Editeur
                                                      • Markdown