【问题标题】:How to re-use forms with some fields left out in Symfony2如何重用 Symfony2 中遗漏了一些字段的表单
【发布时间】:2011-12-05 04:34:44
【问题描述】:

我正在使用嵌入式表单来制作一个注册表单,其中包含多个相关实体的字段。正如我在此处的问题中向我解释的那样:
Symfony2 form where the data objects doesn't match exactly what needs to be filled in

这很好用。但是假设我想重复使用我嵌入的其中一个表单,但保留了一些字段。
那我有什么选择呢?

  • 我是否创建一个额外的 formType 来扩展原来的 formType?
  • 我是否决定在视图中忽略某些字段?

在我看来,这并不像是一个视图决定。对我来说,为每个不同的用例进行扩展感觉就像是一种糟糕的重用实践。
其他人是如何解决这个问题的?

谢谢,

节食

【问题讨论】:

标签: forms symfony code-reuse


【解决方案1】:

我认为最好的解决方案是创建一个基本抽象类型并让你的类型扩展它。这是一个简短的例子:

namespace Acme\Bundle\DemoBundle\Form\Type;

use Symfony\Component\Form\AbstractType;

abstract FooBaseType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        // Add all fields common for your other types.
    }
}

现在您可以将其扩展为包含缺失的字段

namespace Acme\Bundle\DemoBundle\Form\Type;

class ExampleType extends FooBaseType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        parent::buildForm($builder, $options);
        // Your missing fields
    }
}

【讨论】:

  • Idd,我看不到其他选择。对我来说似乎有点不方便,但至少有人同意我的观点,这是要走的路:) 谢谢!
【解决方案2】:

请参阅此 github 拉取请求:https://github.com/symfony/symfony-docs/pull/765

这似乎正是您正在寻找的。​​p>

【讨论】:

  • 确实如此。会留意那个。再次感谢巴特 :-)
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2021-02-27
  • 2021-04-25
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多