繁体   English   中英

AngularJS PUT与Symfony2 PUT方法 更新不起作用

[英]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) }}

根据文档

这将呈现给定表单尚未呈现的所有字段。 始终将其保留在表单内是一个好主意,因为它将为您呈现隐藏的字段,并使您忘记呈现的所有字段变得更加明显(因为它将为您呈现该字段)。

form_rest(视图,变量)

来自@M Khalid Junaid 的CSRF令牌答案无效。 请尝试重新提交表格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM