form_widgetとは決まったHTMLでフォームを出力してくれるtwigの関数です。EC-CUBEではほとんどのページでこの関数によりフォームを出力しています。
このHTMLには最初からBootstrap3のクラスが使用されており、このrowやform-controlといったクラスがコーディングデータ組み込みの邪魔になることが良くあります。そのような場合の対応として、Bootstrapのクラスを取り除くには次の3つの方法が考えられます。
- ・Form/form_layout.twigを修正する
- ・twig.form.templatesにForm/form_layout.twig以外のテンプレートを指定する
- ・form_theme関数によりtwig内でテーマを変更する
Form/form_layout.twigについて
ApplicationクラスのinitRenderingメソッド内で次のようにForm/form_layout.twig をデフォルトで使用するよう指定されています。
$this->register(new \Silex\Provider\TwigServiceProvider(), array( 'twig.form.templates' => array('Form/form_layout.twig'), ));
このform_layout.twigにはtextやchoiceなどそれぞれのFormTypeのHTMLをどのように出力するかが規定されています。
ファイルの上部を見るとForm/form_layout.twigはbootstrap_3_layout.html.twigを継承しています。そのためにbootstrap3のクラスが自動で付与されるという仕組みです。
Form/form_layout.twigを修正または使用せずに別のテンプレートを使用すればBootstrapのクラスを使用しないフォームを出力することができます。
form_theme関数について
form_themeは管理画面のtwigで{% form_theme searchForm ‘Form/bootstrap_3_horizontal_layout.html.twig’ %}というように用いられていますが、一部のフォームだけを違うテンプレートに設定できる関数です。
部分的に出力されるHTMLを変更したい場合はform_theme関数を用いると便利です。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。