symfony 形式的重复位

symfony form repeated bits

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

一个很好的例子是 "startDate" 和 "endDate" 用于博文、文章或任何您想要提供 start/endDate 用于显示目的的内容。 (请不要问为什么要给博文一个结束日期)。

如您所想,表单元素也会重复。

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

我考虑过listeners/subscribers,但不取决于实际数据。

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

这里有我可以使用的 Symfony 表单功能吗?

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

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

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

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

之所以使用不同的方法名称是为了避免在将其导入主程序时发生冲突 class。