繁体   English   中英

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

[英]Pass form data as parameter to Symfony2 controller function via AJAX

我认为这是正确的更复杂技巧之一,因此我决定在StackOverflow上寻求知识渊博的人员的帮助。 我的情况如下:我有两个实体,一个用户和一个帐户。 用户总是在注册时链接到一个帐户(并且取决于用户的类型,可能会链接到多个帐户。注册后,将调用函数saveUser()(通过前端的ajax),并检索提交的表单数据然后将数据以参数的形式传递给函数saveAccount($ data)(在saveUser()函数中调用),并创建帐户(有时会使用不同的数据集多次调用)创建各种帐户),该帐户已链接到用户。

现在,我想从管理面板中创建一个帐户而不创建用户,因此我想直接通过ajax(从前端)调用saveAccount($ data)并将表单数据作为PARAMETER传递给它(而不是在函数通过Request对象),这样我就可以使用相同的saveAccount($ data)函数,而不必创建一个工作于Request变量的saveAccount()。 这有意义吗? 这可能吗? 如果是这样,我将如何去做?

我没有发布任何代码,因为我没有看到它的需要,这更多是一个概念上的问题,但是如果您需要我到目前为止所拥有的代码,或者如果不清楚,我将很乐意进行阐述。

不应该有任何saveAccount方法,你仅仅依靠实体之间的关系,即在setAccount方法,或到addAccount的情况下,一个你需要一个实体添加到Collection

然后,Doctrine将负责保存和保留所有内容。

为了保存数据,我将始终依靠RESTful接口[您可以通过FOSRestBundle轻松创建 ],并且无论如何都可以通过ajax发送所有内容; 您将获得一个更流畅的界面和更可维护的代码。

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

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

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

暂无
暂无

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

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