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

 PHP Discussion :

Pb HiddenType Formulaire


Sujet :

PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Par défaut Pb HiddenType Formulaire
    Bonjour,

    J'ai un problème lorsque j'ajoute un champ hidden dans mon formulaire et que je le valide , j'ai l'erreur suivante : Uncaught PHP Exception Symfony\Component\PropertyAccess\Exception\InvalidArgumentException: "Expected argument of type "array", "string" given." at /srv/data/web/vhosts/a72dde2804.yatu.ws/htdocs/my_project/vendor/symfony/property-access/PropertyAccessor.php line 173

    L'erreur est déclenchée par la ligne suivante : $form->handleRequest($request);

    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
     
    <?php
    // src/Controller/RegistrationController.php
    namespace App\Controller;
    use App\Form\UserType_2;
    use App\Entity\User_2;
    use App\Events;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
    use Symfony\Component\EventDispatcher\EventDispatcherInterface;
    use Symfony\Component\EventDispatcher\GenericEvent;
    use Symfony\Component\Translation\TranslatorInterface;
    class RegistrationController_2 extends Controller
    {
        /**
         * @Route("/inscription", name="user_registration")
         * @Route("/pro/inscription", name="pro_user_registration")
         */
        public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
        {
    		$pro = true;
            // 1) build the form
            $user = new User_2();
            $form = $this->createForm(UserType_2::class, $user);
     
            // 2) handle the submit (will only happen on POST)
            $form->handleRequest($request);
            if ($form->isSubmitted() && $form->isValid()) {
     
                // 3) Encode the password (you could also do this via Doctrine listener)
                $password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
                $user->setPassword($password);
     
                // 4) save the User!
                /*$entityManager = $this->getDoctrine()->getManager();
                $entityManager->persist($user);
                $entityManager->flush();*/
     
                // ... do any other work - like sending them an email, etc
                // maybe set a "flash" success message for the user
     
                //return $this->redirectToRoute('replace_with_some_route');
            } else {
    			echo "ll";
    		}
     
            return $this->render(
                'register.html.twig',
                array('form' => $form->createView(),"pro"=>true)
            );
        }
    }
    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
     
    <?php
    // /src/Form/UserType.php
    namespace App\Form;
    use App\Entity\User_2;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Form\Extension\Core\Type\EmailType;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
    use Symfony\Component\Form\Extension\Core\Type\PasswordType;
    use Symfony\Component\Form\Extension\Core\Type\HiddenType;
    use Symfony\Component\Form\Extension\Core\Type\TelType;
    use Symfony\Component\Translation\TranslatorInterface;
     
    class UserType_2 extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
     
    		$pos = strpos($_SERVER['REQUEST_URI'],"/pro/");
    		if($pos === false) {
    			$role = 'ROLE_USER';
    		} else {		
    			$role = 'ROLE_PRO';
    		}
     
            $builder
    	   ->add('roles', HiddenType::class, array(
    	   'data' => $role,
    	   ))
               //->add('roles', TextType::class,array('required'   => false,'label'=>'roles','attr'=> array('class'=>'form-control')))
         	   ->add('firstName', TextType::class,array('required'   => false,'label'=>'firstName','attr'=> array('class'=>'form-control')))
               ->add('lastName', TextType::class,array('required'   => false,'label'=>'lastName','attr'=> array('class'=>'form-control')))
               ->add('phone', TelType::class,array('error_bubbling' => true,'label'=>'phone','attr'=> array('class'=>'form-control')))
               ->add('email', EmailType::class,array('label'=>'Email','attr'=> array('class'=>'form-control')))            
               ->add('username', TextType::class,array('label'=>'Login','attr'=> array('class'=>'form-control')))
               ->add('password', RepeatedType::class, array(
                   'type' => PasswordType::class,
                 'first_options'  => array('label' => 'Password','attr'=> array('class'=>'form-control')),
                 'second_options' => array('label' => 'Repeat Password','attr'=> array('class'=>'form-control'))))
     
            ;
        }
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => User_2::class,
            ));
        }
    }
    ?>
    Je vous remercie pour votre aide

  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
    s'attends à avoir un array et il reçoit un String.

    au niveau de la propriété role de la classe User

Discussions similaires

  1. Création d'un formulaire sous flash?
    Par ultrakas dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 18h33
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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