2016-01-16 44 views
0

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

一个很好的例子是“startDate”和“endDate”用于博客帖子,文章或任何你想给出的开始/结束日期用于显示目的。 (请不要问为什么你想给blogpost一个endDate)。你可以想象,表单元素也会重复使用。

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

我已经考虑过监听者/订阅者,但它并不取决于实际的数据。

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

我可以在这里使用任何Symfony窗​​体功能吗?

+0

必填字段? – darkomen

+0

是的,他们是必填字段。 – DoppyNL

回答

0

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

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

然后在你需要的每种类型中包含这个特质。并调用buildForm方法:

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

的原因不同方法的名称是在主类中导入时,以避免冲突。