Обновление формы в Synfony говорит, что токен CSRF недействителен - PullRequest
0 голосов
/ 12 июня 2019

Я создал регистрационную форму для получения информации в своей пользовательской таблице.Теперь я хочу использовать тот же шаблон для обновления информации о пользователе.Кроме того, я не хочу обновлять электронную почту или пароль пользователя. Я использую следующий код для отправки формы.$ Форма-> отправить ($ request-> request-> прибудет ($ форма-> GetName ()), ложь);Но он говорит: «Токен CSRF недействителен. Пожалуйста, попробуйте повторно отправить форму».Как это исправить?

// Это мой контроллер

/**
 * @Route("/update/{id}", name="update")
 * @param $id
 * @param Request $request
 * @param UserPasswordEncoderInterface $passwordEncoder
 * @param UserRepository $userRepository
 * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
 */

public function updateUser($id,Request $request, UserPasswordEncoderInterface $passwordEncoder, UserRepository $userRepository){
    $user = $userRepository->find($id);


    $form = $this->createFormBuilder($user)
        ->add('email',EmailType::class,[
            'label'=>'Email',
            'required' => false,
            'attr'=>['placeholder'=>"Email"]
        ])
        ->add('password',RepeatedType::class,[
            'type' => PasswordType::class,
            'invalid_message' => 'The password fields must match.',
            'required' => false,
            'options' => ['attr' => ['class' => 'password-field']],
            'first_options'  => ['label' => 'Password','attr'=>['placeholder'=>"Password"]],
            'second_options' => ['label' => 'Confirm Password','attr'=>['placeholder'=>"Confirm Password"]],
        ])
        ->add('firstName',TextType::class,['label'=>'First Name',  'attr'=>['placeholder'=>"First Name"]])
        ->add('lastName',TextType::class,['label'=>'Last Name','attr'=>['placeholder'=>"Last Name"]])
        ->add('address',TextareaType::class,['required' => false,'label'=>'Address','attr'=>['placeholder'=>"Address"]])
        ->add('idNumber',TextType::class,['label'=>'NIC Number','attr'=>['placeholder'=>"NIC Number"]])
        ->add('phoneNumber',TelType::class,['label'=>'Phone Number','attr'=>['placeholder'=>"Phone Number"]])
        ->add('image',FileType::class,['label'=>'Photo','required'=>false,'attr'=>['hidden'=>"hidden", 'accept'=>"image/jpeg, image/png"]])
        ->add('save',SubmitType::class,[
            'label'=>'Register',
            'attr' => [
                'class'=>"btn btn-outline-success float-right"
            ]
        ])
        ->getForm();



    $form->submit($request->request->get($form->getName()),false);

        if($form->isSubmitted() && $form->isValid()){

            if($user->getPassword() !=""){
                $user->setPassword($passwordEncoder->encodePassword($user,$user->getPassword()));
            }

            $em = $this->getDoctrine()->getManager();
            $em->flush();
            return $this->redirect($this->generateUrl('home'));
        }






    return $this->render('register/update.html.twig', [
        'form'=>$form->createView(),
    ]);




}

// А это мой файл ветки.

                        <form name="register" id="register_form"  method="post" enctype="multipart/form-data">
                            <div id="register">
                                <div class="container">
                                    <div class="row">
                                        <div class="col-sm-5">
                                            {{ form_errors(form.firstName) }}
                                            {{ form_widget(form.firstName) }}
                                        </div>
                                        <div class="col-sm-2"></div>
                                        <div class="col-sm-5">
                                            {{ form_errors(form.lastName) }}
                                            {{ form_widget(form.lastName) }}
                                        </div>
                                    </div>

                                    <div style="margin-top: 0.5cm;"></div>

                                    <div class="row">
                                        <div class="col-sm-6">
                                            {{ form_errors(form.email) }}
                                            {{ form_widget(form.email,{'attr':{'disabled':"disabled"}}) }}
                                        </div>
                                        <div class="col-sm-1"></div>
                                        <div class="col-sm-5">

                                            {{ form_errors(form.idNumber) }}
                                            <input type="text"  id="register_idNumber" placeholder="NIC Number" onkeypress="isInputNumber(event)" pattern="^[0-9]{9}[a-zA-Z]$" value="{{ form.idNumber.vars.value }}" name="register[idNumber]" required="required" class="form-control" " />                                                    <div class="input-group-append">

                                            </div>
                                        </div>
                                    </div>


                                    <div style="margin-top: 0.5cm;"></div>

                                    <div class="row">
                                        <div class="col-sm-5">
                                            <div style="margin-top: 0.5cm;"></div>
                                            {{ form_errors(form.phoneNumber) }}
                                            <input type="tel" id="register_phoneNumber" value="{{ form.phoneNumber.vars.value }}" name="register[phoneNumber]" onkeypress="isPhone(event)" required="required" placeholder="Phone Number" class="form-control" pattern="^[0-9]{10}$" />
                                        </div>
                                        <div class="col-sm-2"></div>


                                    </div>

                                    <div style="margin-top: 0.5cm;"></div>
                                    <div class="row" >
                                        <div class="col-sm-7">
                                            {{ form_errors(form.address) }}
                                            {{ form_widget(form.address) }}
                                        </div>
                                        <div class="col-sm-1" hidden="hidden">
                                            {{ form_widget(form.image) }}
                                        </div>

                                    </div>

                                    <div style="margin-top: 0.5cm;"></div>
                                    <div class="form-group row">
                                        <div class="col-sm-7">
                                            <div class="custom-control custom-checkbox">
                                                <input type="checkbox" class="custom-control-input" id="defaultUnchecked" style="float: left">
                                                <label class="custom-control-label" for="defaultUnchecked">Change Password</label>
                                            </div>
                                        </div>

                                    </div>
                                    <div style="margin-top: 0.5cm;"></div>

                                    <div id="register_password" >
                                        <div class="form-group row">
                                            {% for passwordField in form.password %}
                                                <div class="col-sm-5">
                                                    {{ form_errors(passwordField) }}
                                                    {{ form_widget(passwordField) }}
                                                </div>
                                                <div class="col-sm-2"></div>
                                            {% endfor %}

                                        </div>
                                        <div style="margin-top: 0.5cm;"></div>
                                    </div>
                                </div>


                                {{ form_widget(form.save,{'label':"Update"}) }}

                                {{ form_row(form._token) }}
                                {{ form_errors(form) }}

                        </form>

1 Ответ

0 голосов
/ 13 июня 2019

Попробуйте добавить: {{form_widget (form._token)}} Внутри вашей формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...