Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CSRF令牌无效。请尝试重新提交_Php_Symfony - Fatal编程技术网

Php CSRF令牌无效。请尝试重新提交

Php CSRF令牌无效。请尝试重新提交,php,symfony,Php,Symfony,我一直在尝试提交一个表单来保存一个对象。当我尝试执行此操作时,会显示以下错误消息: 我使用服务创建表单,使用控制器调用数据。 我添加{form\u rest(form)}和{{form\u row(form.\u token)} SkillController.php: 检查生成的html页面的源代码。我想,你有一个额外的标签 尝试删除行{{form_小部件(form.nomComp)}您将使用后一个{{form_row(form.nomComp)}}来呈现此表单字段,请尝试以下操作: {%

我一直在尝试提交一个表单来保存一个对象。当我尝试执行此操作时,会显示以下错误消息:

我使用服务创建表单,使用控制器调用数据。 我添加
{form\u rest(form)}
{{form\u row(form.\u token)}

SkillController.php:
检查生成的html页面的源代码。我想,你有一个额外的
标签

尝试删除行
{{form_小部件(form.nomComp)}

您将使用后一个
{{form_row(form.nomComp)}}

来呈现此表单字段,请尝试以下操作:

{% set formId = form.vars.id~'Form' %}
{{ form_start(form) }}
{{ form_errors(form) }}
            {{ form_widget(form.nomComp) }}
            {{ form_widget(form.submit) }}          
{{ form_end(form) }}
{{ form_rest(form) }}

您不需要添加csrf字段,因为Symfony将为您添加一个csrf字段automaticly@FrankB但当转储请求时,我有_令牌,如何自动提交qdd csrf?!它是默认设置完成的,所以只需从您的系统中删除所有与csrf相关的内容code@FrankB还有错误:(可能删除“csrf\u字段\u名称”,从未使用过此选项。您也不需要执行“form\u rest”。默认情况下,它由“form\u end”完成。从删除“csrf\u字段\u名称”开始,只需执行“form(form)”在您看来。它应该可以工作。我在config.yml中禁用csrf保护时解决了此错误,但现在出现了此错误:此表单不应包含额外字段。我不建议禁用csrf保护。使用
{form_row(%field%)}
您将呈现字段的标签、小部件和错误。我仍然相信,两次呈现非映射字段会产生额外的
标记,但如果没有html页面生成的源代码,这只是一个猜测。
<?php 

namespace AppBundle\Handler;

use AppBundle\Handler\HandlerInterface;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Skill;
use Doctrine\ORM\EntityManager;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\Form\formFactory;

/**
 * SkillHandler.
 */
class SkillHandler implements HandlerInterface {

    /**
     *
     * @var EntityManager 
     */
    protected $em;

    /**
     *
     * @var formFactory 
     */
    private $formFactory;


    /**
     *function construct.
     */
    public function __construct(EntityManager $entityManager, formFactory $formFactory)
        {
            $this->em = $entityManager;
            $this->formFactory = $formFactory;
        }

     /**
       *function post
       */
    public function post(array $parameters, array $options = []) {
        $form = $this->formFactory->create(\AppBundle\Form\SkillType::class, new Skill(), $options);
        $form->submit($parameters);
       var_dump($form->getErrors());
        if ($form->isValid()) {
            var_dump('1');
            $skill = $form->getData();
            $this->persistAndFlush($skill);
            return $skill;
        }

        return $form;
    }

    /**
     *function persisteAndFlush
     */

    protected function persistAndFlush($object) {
       $this->em->persist($object);
       $this->em->flush();
    }


    /**
     *function get
     */
     public function get($id){
        throw new \DomainException('Method SkillHandler::get not implemented');

     }

     /**
      *function all
      */
      public function all($limit = 10, $offset = 0){
        throw new \DomainException('Method SkillHandler::all not implemented');
      }


    /**
     *function put
     */
    public function put($resource, array $parameters, array $options){
        throw new \DomainException('Method SkillHandler::put not implemented');
    }

    /**
     *function patch
     */
    public function patch($resource, array $parameters, array $options){
        throw new \DomainException('Method SkillHandler::patch not implemented');
    }

    /**
     *function delete
     */
     public function delete($resource){
        throw new \DomainException('Method SkillHandler::delete not implemented');
         }
}
<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class SkillType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('nomComp',TextType::class);
        $builder->add('submit',SubmitType::class);
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Skill',
            'csrf_field_name' => '_token',

        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'appbundle_skill';
    }


}
{% extends 'base.html.twig' %}
{% block body %}

{{ form_start(form) }}

    {#{{ form_label(form.nomComp) }}
    {{ form_widget(form.nomComp) }}
    {{ form_errors(form.nomComp) }}
#}
    {{ form_row(form.nomComp) }}
    {{ form_row(form.submit) }}

    {{ form_row(form._token) }}



    {#<input type="submit" value="Create" name="form[submit]"/>#}
    {{ form_rest(form) }}

    {{ form_end(form) }}

{%endblock%}
{% set formId = form.vars.id~'Form' %}
{{ form_start(form) }}
{{ form_errors(form) }}
            {{ form_widget(form.nomComp) }}
            {{ form_widget(form.submit) }}          
{{ form_end(form) }}
{{ form_rest(form) }}