Javascript AngularJS PUT vs Symfony2 PUT方法。更新不';行不通
我正在用symfony2.4和angularjs构建应用程序。在angular中,我创建了资源:Javascript AngularJS PUT vs Symfony2 PUT方法。更新不';行不通,javascript,php,angularjs,symfony,Javascript,Php,Angularjs,Symfony,我正在用symfony2.4和angularjs构建应用程序。在angular中,我创建了资源: app.factory('Tasks', ['$resource', function($resource) { return $resource( 'api/tasks/:taskid', null, { 'update': { method:'PUT' } }); }]); 当我尝试这样更新时:Tasks.update({tas
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发送(?或者只是发送我给出的这个对象),我认为这就是问题所在。我怎样才能修理它
您需要在表单中添加\u令牌
,即
{{ form_row(form._token) }}
到目前为止,您的表单缺少csrf令牌字段,如果您使用twig表单函数呈现表单,如表单(表单)
,这将自动为您呈现csrf令牌字段,但您的代码显示您正在使用原始html呈现表单,如
,则您必须手动呈现该字段
或者只需在关闭表单标记之前添加{{form\u rest(form)}
根据文件
这将渲染所有尚未为给定对象渲染的字段
形式。这是一个好主意,总是有这个地方在你的形式
因为它将为您呈现隐藏字段,并生成您忘记的任何字段
渲染更明显(因为它将为您渲染字段)
来自中@M Khalid Junaid的回答您缺少CSRF(防伪)令牌。如何添加它?:)作为任务属性?