0

我有几个实体使用特征来获得相同的属性和相同的行为,而无需重复代码。

一个很好的例子是“startDate”和“endDate”,用于博客文章、文章或任何您想为显示目的提供开始/结束日期的东西。(请不要问为什么要给博文一个 endDate)。

可以想象,表单元素也会重复。

防止在我的 FormType 中重复这段代码的最佳方法是什么?

我考虑过听众/订阅者,但这并不取决于实际数据。

我也可以在这里使用特征,并在特征中调用方法。这会很好用,但可能看起来有点奇怪。此外,这并没有使用 symfony 的任何表单特性,这些特性可能正是我想要的。

我可以在这里使用任何 Symfony 表单功能吗?

4

1 回答 1

0

一个可能的解决方案是使用特征。

trait YourRepetitiveFieldsTypeTrait
{
    public function buildFormYourRepetitiveFields(FormBuilderInterface $builder, array $options)
    {
        // add form fields as you would normally
    }
}

然后将此特征包含在您需要的每个类型中。并调用方法buildForm

$this->buildFormYourRepetitiveFields($builder, $options);

不同方法名称的原因是为了避免在主类中导入它时发生冲突。

于 2016-01-22T14:19:08.633 回答