通过AJAX将表单数据作为参数传递给Symfony2控制器函数

时间:2013-12-13 14:55:43

标签: php jquery ajax symfony

我认为这是一个更复杂的技巧,因此我决定在StackOverflow上获得知识渊博的人的帮助。我的方案如下:我有两个实体,一个用户和一个帐户。用户在注册时始终链接到帐户(并且根据用户的类型,可能链接到多个帐户。注册后,调用函数saveUser()(通过前端的ajax)并检索提交的表单数据从请求对象。然后以参数的形式将此数据传递给函数saveAccount($ data)(在saveUser()函数中调用)并创建帐户(有时使用不同的数据集调用多次)创建各种帐户),链接到用户。

现在我想从我的管理面板创建一个帐户而不创建用户,所以我想直接通过ajax(来自前端)调用saveAccount($ data)并将表单数据作为PARAMETER传递给它(而不是检索它在函数中通过Request Object),这样我就可以使用相同的saveAccount($ data)函数,而且我没有必要创建一个saveAccount()来处理Request变量。这有意义吗?这可能吗?如果是这样,我将如何做到这一点?

我没有发布任何代码,因为我没有看到它的需要,这更像是一个概念问题,但是如果你需要我到目前为止的代码,或者如果有任何不清楚的话,我将很乐意详细说明。

2 个答案:

答案 0 :(得分:0)

不应该有任何saveAccount方法,您只需依赖实体之间的关系,即setAccount方法或addAccount方法,以防您需要添加实体到Collection

然后,Doctrine将负责保存和坚持一切。

为了保存数据,我总是依赖于RESTful接口[您可以通过FOSRestBundle轻松创建],并通过ajax发送所有内容,无论如何;你最终会得到一个更流畅的界面和更易于维护的代码。

答案 1 :(得分:0)

对于可以通过带表单数据的AJAX或内部通过另一个控制器函数调用控制器函数的实例,以下解决方案有效:

public function saveAccount($data = null)
{
    if (empty($data)) $data = $this->getRequest()->request->all();
    ...
}

然后您可以使用与表单数据数组相同的格式将数组传递给控制器​​函数,如果传递给函数它将使用该数据,否则它将检索REQUEST(表单)数据。