我在symfony2.4和angularjs中构建应用程序。在角度我创建了资源:
app.factory('Tasks', ['$resource', function($resource) {
return $resource( 'api/tasks/:taskid', null,
{
'update': { method:'PUT' }
});
}]);
当我尝试像这样更新时:Tasks.update({ taskid : task.id },task);
我收到此错误:
{"code":400,"message":"Validation Failed","errors":{"errors":["The CSRF token is invalid. Please try to resubmit the form."],"children":{"timeStart":{"children":{"date":[],"time":[]}},"timeStop":{"children":{"date":[],"time":[]}},"project":[],"descriptionTask":[],"isCompleted":[],"isVisible":[]}}}
当我在symfony中构建表单然后更新任何任务时 - 它可以工作。但我注意到 AngularJS不会通过POST发送任何数据。它通过JSON发送(?或只是发送我给的这个对象),我认为这是问题所在。我该怎么修呢?
答案 0 :(得分:0)
中来自@M Khalid Junaid的回答您需要在表单中添加
_token
,即{{ form_row(form._token) }}
截至目前,您的表单缺少csrf标记字段,如果您使用twig表单函数来呈现类似
form(form)
的表单,这将自动为您呈现csrf标记字段,但您的代码显示您正在呈现您的表单使用原始html格式为<form></form>
,然后您必须手动渲染字段或在关闭表单
之前简单地添加{{ form_rest(form) }}
根据文件
这将呈现尚未针对给定呈现的所有字段 形成。在表单中的某个地方总是有这个好主意 因为它会为你渲染隐藏的字段并使你忘记的任何字段 渲染更明显(因为它会为你渲染场)。