如何自动将用户对象传递给 Symfony 3 表单?

Posted

技术标签:

【中文标题】如何自动将用户对象传递给 Symfony 3 表单?【英文标题】:How to automatically pass user object to Symfony 3 form? 【发布时间】:2016-10-15 07:43:51 【问题描述】:

我正在学习 Symphony 3 框架,我遇到了一个应该是基本的问题,但我还没有找到解决方案。

我有一个订单表格,数据类设置为Order对象,这是ORM映射到相应的表。我将关系设置为用户、产品和付款对象。在我的表单中,用户可以选择产品和付款,到目前为止它可以工作。只有我不知道如何将当前用户对象传递给表单,所以它会验证。我不想为用户放入表单字段,因为它始终是当前用户对象,用户不应该以某种方式看到或修改它。

除了使用户关系可以为空并在表单验证之后和持久化之前添加它之外,还有其他选择吗?在数据库中将此字段设为可选似乎不是最佳做法。

【问题讨论】:

希望this能帮上忙 【参考方案1】:

在这种情况下,您不必想得太难。只需在持久化 Product 实体之前设置用户实体

if ($form->isSubmitted() && $form->isValid())

        $em = $this->getDoctrine()->getManager();

        $product->setUser($this->getUser());

        $em->persist($product);
        $em->flush();

        return $this->redirectToRoute('some_route');

【讨论】:

以上是关于如何自动将用户对象传递给 Symfony 3 表单?的主要内容,如果未能解决你的问题,请参考以下文章

如何将用户对象传递给 Django 中的表单

如何将令牌存储作为参数传递给 Symfony 3.4 中的事件监听器

将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

将数据对象传递/绑定到内部/嵌入的 Symfony2 表单

如何正确地将参数传递给rails表单

Flutter如何将表单数据传递给api