使用Symfony获取Backbonejs发送的帖子数据

时间:2015-09-13 10:10:04

标签: php symfony backbone.js

我是骨干和新手symfony(以及开源),我正在尝试基于这两个框架制作示例应用程序。我在前端有一个HTML页面(使用主干),我通过调用model.save,model.destroy等向后端系统发送请求(使用symfony)。在后端系统上我有一个控制器的动作,声明为下面:

public function createAction(Symfony\Component\HttpFoundation\Request $request)

但是当我var_dump $ request时,我找不到从前端发送的POST参数($ _REQUEST,$ _POST)。 我想知道如何使用Symfony获取POST参数?

这是我的Backbone代码

var BookModel = Backbone.Model.extend({
    urlRoot : 'http://localhost/bookkeeper/web/app.php/',
    defaults : {
        title : '',
        description : '',
        pages : 0
    }

});

var book = new BookModel();
var bookDetails = {
    title : 'Test backbone test add new',
    description : 'test add new',
    pages : 354
};
book.urlRoot = 'http://localhost/bookkeeper/web/app_dev.php/create';

book.save(bookDetails, {
    success : function(model, response) {
        console.log(response);
    },
    error : function(model, response) {
        console.log(response);
    }
});

如果您能为我提供解决此问题的教程,我也很感激。 谢谢你的帮助

PS:如果我通过调用

使用HTML表单,我可以获取POST数据
$request->request->get('description')

2 个答案:

答案 0 :(得分:0)

很抱歉有时间试试这个

book.save(bookDetails, {
    silent  : false,
    sync    : true,
    success : function(model, res) {
        if (res && res.errors) {
            console.log('no way, crap!');
        } else {
            console.log('yes i did it!');
        }
    },
    error: function(model, res) {
        console.log('error!');
    }
);

答案 1 :(得分:0)

您必须使用可以处理AJAX请求的操作声明Symfony Controller。在您的操作中,您可以通过$request->isXmlHttpRequest()检查您的Request对象是否为AJAX。

您需要查看有关控制器和路由的Symfony文档:http://symfony.com/doc/current/book/controller.html