FormType内で設定する方法
フォームの各項目はEccube/Form/Type内にあるFormTypeクラスで設定されています。
ContactType.phpの中では次のように「問い合わせ内容」項目が設定されています。
$builder ->add('contents', 'textarea', array( 'help' => 'form.contact.contents.help', 'constraints' => array( new Assert\NotBlank(), ), ))
これにクラス名を付けるにはattr配列を付け足します。class_nameを付けたいクラス名に変更してください。
->add('contents', 'textarea', array( 'help' => 'form.contact.contents.help', 'constraints' => array( new Assert\NotBlank(), ), 'attr' => array( 'class' => 'class_name' ), ))
Twig内で設定する方法
ContactTypeでnameやaddressは子要素を持つ集合体として定義されています。
これにclassを設定しても子要素には反映されません。
その場合はTwigテンプレート内で直接子要素にclassを設定しましょう。
<dd class="form-group input_name"> {{ form_widget(form.name.name01) }} {{ form_widget(form.name.name02) }} {{ form_errors(form.name.name01) }} {{ form_errors(form.name.name02) }} </dd>
この部分を次のように書き換えます。
<dd class="form-group input_name"> {{ form_widget(form.name.name01, {attr : {class : 'class_name'}}) }} {{ form_widget(form.name.name02) }} {{ form_errors(form.name.name01, {attr : {class : 'class_name'}}) }} {{ form_errors(form.name.name02) }} </dd>
これでInputに対してクラスが設定できたはずです!
この方法ではクラスだけでなくIDやdata-属性も付与できますので、ECCUBE3をご利用の方はぜひお試しください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。