[英]AngularJS PUT vs Symfony2 PUT method. Update doesn't work
我正在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发送(?或只是发送我给的对象),我认为这是问题所在。 我该如何修理?
您需要在表单中添加
_token
,即{{ form_row(form._token) }}
到目前为止,您的表单缺少csrf令牌字段,如果您使用细枝表单函数来呈现
form(form)
如form(form)
这将自动为您呈现csrf令牌字段,但是您的代码显示您正在使用raw呈现表单像<form></form>
这样的<form></form>
html,那么您必须手动呈现该字段或仅在关闭表单标记之前添加
{{ form_rest(form) }}
根据文档
这将呈现给定表单尚未呈现的所有字段。 始终将其保留在表单内是一个好主意,因为它将为您呈现隐藏的字段,并使您忘记呈现的所有字段变得更加明显(因为它将为您呈现该字段)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.