Как добавить новый макет формы в Symfony2? - PullRequest
2 голосов
/ 26 ноября 2011

В моем проекте Symfony2 я заметил, что есть только два варианта макета для рендеринга форм:

form_table_layout.html.twig и form_div_layout.html.twig

Они оба находятся в symfony\src\Symfony\Bridge\Twig\Resources\views\Form, и яЯ хотел бы добавить свой собственный где-нибудь в моем каталоге app\Resources.

Единственная проблема, с которой я сталкиваюсь, это когда я добавляю свой новый файл макета (form_list_layout.html.twig) в app\Resources\views\Form, Symfony нене ищу его, а просто ищет в расположении по умолчанию (в каталоге Twig).

Я настроил config.yml, чтобы он включил новый макет, но, возможно, я делаю что-то не так:

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources: ['form_list_layout.html.twig']

РЕДАКТИРОВАТЬ: Хорошо, я теперь Symfony2 ищет в нужном месте, но это, похоже, не влияет на рендеринг формы (я скопировал содержимое таблицыфайл макета в мой новый файл макета списка, чтобы проверить теорию, и моя форма все еще рендерится с тегами <div>. Это может быть вызвано использованием CraueFormFlowBundle, который я использую, поэтому я проверю это).

Работающий config.yml:

 twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources:
            - ":Form:form_list_layout.html.twig"

РЕДАКТИРОВАТЬ 2: Не похоже на этоИмеет ли что-нибудь отношение к CraueFormFlowBundle, есть ли в моей конфигурации что-то, что может игнорировать глобальный макет формы?

РЕДАКТИРОВАТЬ: На самом деле, это работает.Как только я изменил свой файл макета, включив в него элементы списка вместо содержимого макета таблицы, все стало нормально.

Ответы [ 2 ]

3 голосов
/ 26 ноября 2011

Вам не нужно помещать его в подпапку app; Вы можете разместить его в любом комплекте. Например, в моем случае я поместил его в CommonBundle/Resources/views/Form/fields.html.twig и активировал в файле config.yml как

twig:
    form:
        resources: [ 'CommonBundle:Form:fields.html.twig' ]

Конечно, если вы поместите его в подпапку app, вы просто пропустите часть имени пакета:

twig:
    form:
        resources: [ ':Form:fields.html.twig' ]
0 голосов
/ 26 ноября 2011

Чтобы правильно переопределить макет формы или добавить новый, поместите файл в каталог app/Resources/views/Form и настройте config.yml на что-то вроде этого ...

twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%
    form:
        resources:
            - ":Form:form_list_layout.html.twig"
...