だ。ログ。

開発とかスノボとかやきうとか。

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>

テンプレートのパーツの入れ替え

これで「動作」は確認済み。
チェックとか甘そうだからそこは各々手作業でデバッグする。