EC-CUBE3のメールアドレス入力を1回にする
ユーザビリティって言葉でよく使われますが、会員登録でメールアドレスを2回入力を1回にしたいと言う依頼があったのでメモ。
1. パーツの変更
/src/Eccube/Form/Type/Front/EntryType.php
//大元はこっち // ->add('email', 'repeated_email') //コメントアウトしてこっちに変える ->add('email', 'email', array( 'required' => true, 'constraints' => array( new Assert\NotBlank(), // configでこの辺りは変えられる方が良さそう new Assert\Email(array('strict' => true)), new Assert\Regex(array( 'pattern' => '/^[[:graph:][:space:]]+$/i', 'message' => 'form.type.graph.invalid', )), ), ))
まずパーツをシングルタイプのメールアドレスに変える。
2. テンプレートの反映
/app/template/default/Entry/index.twig
//大元 /* <dd> {% for emailField in form.email %} <div class="form-group {% if emailField.vars.errors is not empty %}has-error{% endif %}"> {{ form_widget(emailField) }} {{ form_errors(emailField) }} </div> {% endfor %} </dd> */ //こっちに変更 <dd> <div class="form-group form-inline"> {{ form_widget(form.email) }} {{ form_errors(form.email) }} </div> </dd>
/src/Eccube/Resource/template/default/Entry/confirm.twig
//大元 /* <div class="form-group"> {{ form_widget(form.email.first) }} {{ form_widget(form.email.second, {freeze_display_text: false}) }} </div> */ //こっちに変更 <div class="form-group"> {{ form_widget(form.email) }} </div>
テンプレートのパーツの入れ替え
これで「動作」は確認済み。
チェックとか甘そうだからそこは各々手作業でデバッグする。