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

时间:2014-04-13 17:37:31

标签: javascript php angularjs symfony

我在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发送(?或只是发送我给的这个对象),我认为这是问题所在。我该怎么修呢?

1 个答案:

答案 0 :(得分:0)

  

您需要在表单中添加_token,即

{{ form_row(form._token) }}
     

截至目前,您的表单缺少csrf标记字段,如果您使用twig表单函数来呈现类似form(form)的表单,这将自动为您呈现csrf标记字段,但您的代码显示您正在呈现您的表单使用原始html格式为<form></form>,然后您必须手动渲染字段

     

或在关闭表单

之前简单地添加{{ form_rest(form) }}      

根据文件

     

这将呈现尚未针对给定呈现的所有字段   形成。在表单中的某个地方总是有这个好主意   因为它会为你渲染隐藏的字段并使你忘记的任何字段   渲染更明显(因为它会为你渲染场)。

     

form_rest(view, variables)

The CSRF token is invalid. Please try to resubmit the form

中来自@M Khalid Junaid的回答