Formに設定されたform-controlを削除したい–Form Themesの設定の方法[Symfony]

SymfonyでFormを生成した際に、自動的に「form-control」というBootstrapのclassがつくのが気になって調べました。
結果から述べると、Form Themeの設定がDefaultでbootstrapになっているのが原因でした。

Form Themesとは

簡単に説明すると、Symfonyが生成するFormのテンプレートを設定できます。
設定されたテーマをもとに、生成されます。

設定場所

# config/packages/twig.yaml

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

上記twig.yamlの設定を変更することで、テーマを変更することができます。
上記例は、bootstrap4を使用したい場合の例です。初期値も最近のバージョンではこれみたいです。

どのようなテーマが用意されているかは公式のドキュメントを参考にしてください。

How to Work with Form Themes

classがない基本的なtheme

私の例のように、bootstrapの「form-control」が自動的にclassとして定義されないようにするには、下記参考。

# config/packages/twig.yaml

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

また、twig単位で設定したい場合は下記のように、form_themeを設定することができます。

{# this form theme will be applied only to the form of this template #}
{% form_theme form 'bootstrap_5_layout.html.twig' %}

 

公式ドキュメントをみていると、自作テンプレートを作成したりなど、結構細かい設定ができそうですね。
今までは、Symfonyが生成するフォーム以外のhtml構造を使いたい場合は、form_widgetを使わずに、formのデータを直接タグに埋め込む作り方をしていました。Form Themeを作ることでより使いやすくなりそうですね。

Symfonyおすすめ書籍

あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。
「PHPフレームワーク Symfony 4入門」