В последнее время я пытаюсь использовать формы Symfony 2, которые довольно хороши для простых форм.Разделение проблем с формами Symfony
Но для использования в отдельных ячейках или что-то в этом роде. Мне часто нужен список связанных объектов в форме. В нескольких Symfony и · блоги, · документы, они предлагают что-то вроде этого ...
//BlogPostType implements FormTypeInterface
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', null, array(
'property' => 'name',
'query_builder' => function(EntityRepository $er) use($options) {
return $er->createQueryBuilder('category')->orderBy('category.name', 'ASC');
}
);
}
Как я обращаю много внимания к области управляемых-дизайна и особенно разделения проблем, мне трудно поверить, что только для привязки связанных объектов к типу пользовательской формы в Symfony, запрашивая его в пользовательском типе формы.
На мой взгляд, это нарушает SoC, потому что формы не должны запрашивать. Таким образом, форма всегда принимает те же объекты, но не форма, которая должна выбирать, какие объекты отображаются ...
Контроллер, который просит конструктора форм построить форму, должен вставлять связанные объекты в конструктор типа пользовательской формы или так ...
//BlogPostType implements FormTypeInterface
public function __construct(array $categories) {
$this->categories = $categories;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', null, array(
'property' => 'name',
'choices' => $this->categories
);
}
Кто-нибудь знает, как это можно достичь?
Хорошо, чтобы передать его через параметры, но как передать список сущностей в элемент управления формы «entity». Согласно документации Symfony, я могу запросить только объекты ... – Stivni
Правильно указан путь к вашему вопросу - просто передайте набор объектов в опцию 'choice' типа' entity'. –