form_widgetとは決まったHTMLでフォームを出力してくれるtwigの関数です。EC-CUBEではほとんどのページでこの関数によりフォームを出力しています。

このHTMLには最初からBootstrap3のクラスが使用されており、このrowやform-controlといったクラスがコーディングデータ組み込みの邪魔になることが良くあります。そのような場合の対応として、Bootstrapのクラスを取り除くには次の3つの方法が考えられます。

  1. ・Form/form_layout.twigを修正する
  2. ・twig.form.templatesにForm/form_layout.twig以外のテンプレートを指定する
  3. ・form_theme関数によりtwig内でテーマを変更する

Form/form_layout.twigについて

ApplicationクラスのinitRenderingメソッド内で次のように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関数を用いると便利です。

 

関連するカスタマイズ

Bootstrap3のクラスform-controlを取り除く方法(form_widget)... EC-CUBE3.0系ではSymfonyComponentの1つであるFormにより、Twig内では強力な関数form_widget、form_errorsが使用できます。 これらは作成したFormType(定義ファイル)に従って自動で初期データ入力やエラー処理をしてくれるというたいへん便利な...
新しくテーブルを作ってエンティティと関連づける方法... 今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。 この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。 データベースの作成 ドクトリン定義ファイルの作成(dcm....
商品一覧のページネーションに「最初へ」「最後へ」を表示する方法... 商品一覧ページのページネーションはProduct/list.twigを見るとpagination.twigをインクルードすることで表示されています。 pagination.twigをのぞいて見ると「最後へ」の部分は次のようなコードが書かれています。 このリンクを表示するにはconfi...
ドクトリンで用いられるエンティティとレポジトリとは?... EC-CUBE3やEC-CUBE4で開発を行なっていると必ず耳にするのがドクトリンやエンティティ、レポジトリといったデータベース周りの用語です。 ECサイトはデータベースと密接に関係しているため、これらを用いずにEC-CUBEの開発を行うことは不可能です。 エンティティとレポジトリとは? ...