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) }}