这让我发疯了。
获取这些代码片段
class CommonController extends Controller
{
/**
* Create delete form
*
* @param int $id
*
* @return Form
*/
protected function createDeleteForm($id)
{
return $this->createFormBuilder(['id' => $id])
->add('id', \Symfony\Component\Form\Extension\Core\Type\HiddenType::class)
->getForm()
;
}
}
和
{% if delete_path is defined %}
<form id="delete" action="{{ path(delete_path, {id: entity.id}) }}" method="POST" class="pull-right" style="margin-top: -43px; margin-right: 10px;">
{{ form_widget(deleteForm) }}
<button type="submit" class="btn btn-default">{{ delete_form_submit_button|trans }}</button>
</form>
{% endif %}
请注意,这不是伪代码,是我在我的朋友要求我修复的应用程序中发现的真实代码。
我的问题是......为什么在视图中没有显示CSRF令牌?
因此,由于缺少csrf标记,我的表单提交始终无效
form_rest
令牌仍然不在那里,所以它似乎根本没有生成,但是,在引擎盖下,它应该在那里(isValid()
)deleteForm
,_token
就在那里,但如果我尝试使用form_widget
或form_row
或form_rest
则不会显示form_widget(deleteForm)
或form_row(deleteForm.id)
,则会显示令牌。