symfony形成重复的位

时间:2016-01-16 10:49:42

标签: forms symfony symfony-2.8

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

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

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

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

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

我也可以在这里使用特征,并在特征中调用一个方法。这样可以很好地工作,但可能看起来有点奇怪。此外,这不会使用任何symfony的表单功能,可能只是我想要的。

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

1 个答案:

答案 0 :(得分:0)

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

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

然后在您需要的每种类型中包含此特征。并在buildForm

中调用该方法
$this->buildFormYourRepetitiveFields($builder, $options);

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