我认为这是一个更复杂的技巧,因此我决定在StackOverflow上获得知识渊博的人的帮助。我的方案如下:我有两个实体,一个用户和一个帐户。用户在注册时始终链接到帐户(并且根据用户的类型,可能链接到多个帐户。注册后,调用函数saveUser()(通过前端的ajax)并检索提交的表单数据从请求对象。然后以参数的形式将此数据传递给函数saveAccount($ data)(在saveUser()函数中调用)并创建帐户(有时使用不同的数据集调用多次)创建各种帐户),链接到用户。
现在我想从我的管理面板创建一个帐户而不创建用户,所以我想直接通过ajax(来自前端)调用saveAccount($ data)并将表单数据作为PARAMETER传递给它(而不是检索它在函数中通过Request Object),这样我就可以使用相同的saveAccount($ data)函数,而且我没有必要创建一个saveAccount()来处理Request变量。这有意义吗?这可能吗?如果是这样,我将如何做到这一点?
我没有发布任何代码,因为我没有看到它的需要,这更像是一个概念问题,但是如果你需要我到目前为止的代码,或者如果有任何不清楚的话,我将很乐意详细说明。
答案 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(表单)数据。