2016-01-16 2 views
0

У меня есть несколько сущностей, которые используют черты для получения одинаковых свойств и одинакового поведения без повторения кода.symfony form repeat bits

Хорошим примером для этого является «startDate» и «endDate» для блога, статей или любого другого, что вы хотите дать start/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); 

Причина другого имя методы, чтобы избежать столкновений при ввозе его в главном классе.