Symfony: как визуализировать тип формы коллекции в произвольном формате - PullRequest
0 голосов
/ 06 ноября 2018

В соответствии с Symfony docs можно настроить индивидуальный тип формы сбора. Как я могу использовать Symfony для определения моего настроенного шаблона веточки? Кажется, он не работает из коробки, но я мог что-то пропустить ..

ЦСИ \ Форма \ Тип \ ItemAliasType:

class ItemAliasType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add("name", TextType::class, [
            "label"              => "item alias name",
            "required"           => true,
        ]);

        $builder->add("description", TextType::class, [
            "label"              => "item alias name",
            "required"           => true,
        ]);
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => ItemAlias::class,
        ]);
    }
}

ЦСИ / Форма / ItemForm:

class ItemForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        /* ... code ... */

        $builder->add("aliases", CollectionType::class, array_merge([
            "label"              => "item-aliases",
            "entry_type"         => ItemAliasType::class,
            "allow_add"          => true,
            "allow_delete"       => true,
            "prototype"          => true,
        ], $inheritedOptions));

    }
}

шаблоны / форма / collections.html.twig:

{% block _aliases_entry_row %}
    <div class="custom">
        {{ form_widget(form.name) }}
        {{ form_widget(form.description) }}
    </div>
{% endblock %}

конфиг / пакеты / twig.yaml:

twig:
    form_theme:
        - 'form/collections.html.twig'

1 Ответ

0 голосов
/ 08 ноября 2018

Блок в шаблоне ветки должен иметь другое имя

шаблоны / форма / collections.html.twig:

{% block _item_form_aliases_entry_row %}

для блокировки идентификатора должно быть <form_name><form_child_name>_entry_(row|widget|label)

Ссылка Artamiels дает четкое объяснение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...