Skip to content

Instantly share code, notes, and snippets.

@chihiro-adachi
Created March 5, 2018 07:56
Show Gist options
  • Save chihiro-adachi/fc6d84cb43e713f20ea0087c0b96cc97 to your computer and use it in GitHub Desktop.
Save chihiro-adachi/fc6d84cb43e713f20ea0087c0b96cc97 to your computer and use it in GitHub Desktop.
form theme

ドキュメント類

テーマの指定

テーマファイルを指定

{% form_theme form '@admin/Form/bootstrap...twig' %}

自身を指定することもできる

{% form_theme form _self  %}

{% block hoge_widget %}
{% endblock %}

指定しない場合

config/twig.yaml

twig:
    form_themes: ['bootstrap_4_layout.html.twig']

デフォルトではdiv_layout.html.twigが指定されている

組み込みテーマ

組み込みテーマの一覧は以下 https://github.com/symfony/symfony/tree/master/src/Symfony/Bridge/Twig/Resources/views/Form

テーマの継承関係

div_layout.html.twig
↑
bootstrap_base_layout.html.twig
↑
bootstrap_4_layout.html.twig
↑
@admin/Form/bootstrap_4_layout.twig

継承元にフォールバックする

widgetとかの拡張

独自にフォームのテーマを定義したい場合

class ZipType extends AbstractType
{
}
{% block zip_widget %}
...
{% endblock zip_widget %}

のように、xxx_widget, xxx_row等で定義する

フォームのパーツ単位で定義することもできる

class FooType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', TextType::class);
    }
}

{% form_theme form _self %}

{% block _foo_name_widget %}
    <div class="text_widget">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment