{#
This file is part of EC-CUBE
Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
http://www.ec-cube.co.jp/
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
#}
{% extends 'default_frame.twig' %}
{% set body_class = 'registration_page' %}
{% form_theme form 'Form/form_div_layout.twig' %}
{% block javascript %}
<script src="//yubinbango.github.io/yubinbango/yubinbango.js" charset="UTF-8"></script>
{% endblock javascript %}
{% block stylesheet %}
{% set errorFields = [
{'field': form.name.name01, 'id': 'entry_name_name01'},
{'field': form.name.name02, 'id': 'entry_name_name02'},
{'field': form.kana.kana01, 'id': 'entry_kana_kana01'},
{'field': form.kana.kana02, 'id': 'entry_kana_kana02'},
{'field': form.postal_code, 'id': 'entry_postal_code'},
{'field': form.address.pref, 'id': 'entry_address_pref'},
{'field': form.address.addr01, 'id': 'entry_address_addr01'},
{'field': form.address.addr02, 'id': 'entry_address_addr02'},
{'field': form.phone_number, 'id': 'entry_phone_number'},
{'field': form.email.first, 'id': 'entry_email_first'},
{'field': form.email.second, 'id': 'entry_email_second'},
{'field': form.plain_password.first, 'id': 'entry_plain_password_first'},
{'field': form.plain_password.second, 'id': 'entry_plain_password_second'}
] %}
{% for errorField in errorFields %}
{% if form_errors(errorField.field) %}
<style>
#{{ errorField.id }}
{
background-color: #FDF1F0;
border: 1px solid #C73C3C !important;
}
</style>
{% endif %}
{% endfor %}
<style>
#entry_address_pref {
padding: 12px 16px;
width: 100%;
border: solid 1px;
border-color: #CCCCCC;
border-radius: 4px;
height: 48px;
}
#entry_name_name01,
#entry_name_name02,
#entry_kana_kana01,
#entry_kana_kana02,
#entry_postal_code,
#entry_phone_number,
#entry_email_first,
#entry_email_second,
#entry_plain_password_first,
#entry_plain_password_second,
#entry_address_addr01,
#entry_address_addr02 {
padding: 16px 12px;
width: 100%;
border-width: 1px;
border-color: #CCCCCC;
border-radius: 3px;
text: #BBBBBB;
height: 48px;
}
input[type="radio"] {
width: 16px;
height: 16px;
border: 2px solid #CCCCCC;
background-color: #CCCCCC;
}
input[type="radio"]::after {
width: 8px;
height: 8px;
background-color: #CCCCCC;
}
input[type="radio"]:checked {
background-color: #666666;
}
#entry_address_pref option {
background-color: #FFFFFF;
padding: 0 80px;
font-size: 16px;
}
.ec-errorMessage {
color: #B84742;
}
#entry_mailmaga_flg {
display: flex;
span,
input {
margin-right: 5px
}
}
@media(min-width: 769px) {
#entry_mailmaga_flg {
align-items: center;
}
#entry_mailmaga_flg label:nth-of-type(1) {
margin-right: 12px;
}
}
@media(max-width: 768px) {
.register_containr {
#breadcrumbs {
padding-left: 6px;
font-size: 10px;
font-weight: 400;
}
}
#entry_mailmaga_flg {
flex-direction: column;
}
#entry_mailmaga_flg input[type="radio"] {
margin-right: 5px;
}
#entry_mailmaga_flg input[type="radio"] + label {
display: flex;
align-items: center;
}
#entry_mailmaga_flg input[type="radio"] {
display: none;
}
#entry_mailmaga_flg label {
display: flex;
align-items: center;
margin-bottom: 10px;
}
#entry_mailmaga_flg input[type="radio"] + label {
display: flex;
align-items: center;
}
#entry_mailmaga_flg input[type="radio"] + label:before {
content: '';
display: inline-block;
width: 16px;
height: 16px;
border: 1px solid #ccc;
border-radius: 50%;
margin-right: 5px;
}
#entry_mailmaga_flg input[type="radio"]:checked + label:before {
background-color: #000;
}
}
</style>{% endblock %}{% block main %}
<div class="register_containr pb-[120px] md:pb-20 md:px-6 whitespace-nowrap bg-background-default">
<div class="flex gap-4 md:gap-2 items-start mx-auto w-full pl-[10.625vw] md:pl-6 pt-[120px] md:pt-20 pb-10">
<hr class="md:h-[64px] h-[120px] w-[2px] bg-gradient-to-b from-[#ADAAA6] to-[#F0EDE900] border-none">
<h1 class="text-2xl md:text-xl font-light leading-9 tracking-widest">会員登録フォーム</h1>
</div>
{% set breadcrumbs = [{'name': "会員登録フォーム(入力)"}] %}
{{ include('Block/breadcrumb.twig') }}
{# 会員登録の流れ #}
<div class="flex flex-col justify-center items-center gap-2 pb-20 md:pb-6 w-full max-w-[592px] mx-auto">
<div class="flex items-center w-full justify-between text-xl md:text-base">
<div class="w-14 h-14 md:w-11 md:h-11 bg-sub-blue flex items-center justify-center rounded-full">
<p class="text-white font-bold font-notoserif leading-none">1</p>
</div>
<div class="w-[33vw] flex-1 h-[2px] bg-gray"></div>
<div class="w-14 h-14 md:w-11 md:h-11 bg-gray flex items-center justify-center rounded-full">
<p class="text-white font-bold font-notoserif leading-none">2</p>
</div>
<div class="w-[33vw] flex-1 h-[2px] bg-gray"></div>
<div class="w-14 h-14 md:w-11 md:h-11 bg-gray flex items-center justify-center rounded-full">
<p class="text-white font-bold font-notoserif leading-none">3</p>
</div>
</div>
<div class="flex w-full items-center mx-auto max-w-[800px] justify-between text-sm md:text-xs">
<p class="font-bold w-[27.8vw] pl-[10px]">入力</p>
<p class="text-center">登録内容の確認</p>
<p class="text-end w-[27.8vw]">登録完了</p>
</div>
</div>
<div class="max-w-[592px] text-[14px] mx-auto">
<div class="pb-12">
<p class="leading-7 mb-[2px] tracking-wider font-normal md:text-sm">登録に必要な情報を入力してください。</p>
<p class="leading-7 tracking-wider text-red font-bold md:text-sm">※ は必須項目です。</p>
</div>
<div class="">
<form method="post" action="{{ url('entry') }}" novalidate class="h-adr">
<span class="p-country-name" style="display:none;">Japan</span>
{{ form_widget(form._token) }}
<div class="flex flex-col gap-10">
<dl class="">
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">お名前</p>
<p class="text-sm text-red">※</p>
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.name.name01, form.name.name02) ? ' error'}}">
<div class="flex gap-2">
<div class="w-1/2 {% if form_errors(form.name.name01) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.name.name01, { 'attr': { 'placeholder': 'common.last_name_yamada' }}) }}</div>
<div class="w-1/2 {% if form_errors(form.name.name02) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.name.name02, { 'attr': { 'placeholder': 'common.first_name_taro' }}) }}
</div>
</div>
<div class="flex flex-col gap-1 pt-2">
{% if form_errors(form.name.name01) %}
<div class="!text-red text-xs flex items-center gap-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex ">
お名前(姓):{{ form_errors(form.name.name01) }}</span>
</div>
{% endif %}
{% if form_errors(form.name.name02) %}
<div class="!text-red text-xs flex items-center gap-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex ">
お名前(名):{{ form_errors(form.name.name02) }}
</span>
</div>
{% endif %}
</div>
</div>
</dd>
</dl>
<dl>
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">お名前(フリガナ)</p>
<p class="text-sm text-red">※</p>
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.kana.kana01, form.kana.kana02) ? ' error'}}">
<div class="flex gap-2">
<div class="w-1/2 {% if form_errors(form.kana.kana01) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.kana.kana01, { 'attr': { 'placeholder': 'common.last_name_kana_yamada' }}) }}</div>
<div class="w-1/2 {% if form_errors(form.kana.kana02) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.kana.kana02, { 'attr': { 'placeholder': 'common.first_name_kana_taro' }}) }}
</div>
</div>
<div class="flex flex-col gap-1 pt-2">
{% if form_errors(form.kana.kana01) %}
<div class="!text-red text-xs flex items-center gap-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex ">
お名前(セイ):{{ form_errors(form.kana.kana01) }}
</span>
</div>
{% endif %}
{% if form_errors(form.kana.kana02) %}
<div class="!text-red text-xs flex items-center gap-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex ">
お名前(メイ):{{ form_errors(form.kana.kana02) }}
</span>
</div>
{% endif %}
</div>
</div>
</dd>
</dl>
<dl>
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">住所</p>
<p class="text-sm text-red">※</p>
</dt>
<dd>
<div class="ec-zipInput{{ has_errors(form.postal_code) ? ' error' }}">
<div class="flex flex-col gap-6">
<div class="">
<div class="pb-4 md:pb-2">
<div class="flex gap-x-4 flex-col w-full gap-y-2 md:items-start">
<p class="font-medium">郵便番号</p>
<div class="flex gap-x-2 items-center font-normal">
<span>{{ 'common.postal_symbol'|trans }}</span>
<div class="w-[160px] ec-zipInput {% if form_errors(form.postal_code) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.postal_code, { 'attr': { 'placeholder': 'common.postal_code_hyphen' }}) }}
</div>
</div>
</div>
{% if form_errors(form.postal_code) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
郵便番号:{{ form_errors(form.postal_code) }}
</span>
</div>
{% endif %}
</div>
<a href="https://www.post.japanpost.jp/zipcode/" target="_blank" class="text-sm border-b w-fit leading-7 tracking-widest font-normal hover">郵便番号を検索する(外部サイトへ)</a>
</div>
<div class="flex flex-col gap-6 md:gap-4">
<div class="ec-select{{ has_errors(form.address.pref) ? ' error' }}">
<p class="pb-2 text-sm font-medium">都道府県</p>
{# TODO:css変更したい #}
{{ form_widget(form.address.pref) }}
{% if form_errors(form.address.pref) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
都道府県:{{ form_errors(form.address.pref) }}
</span>
</div>
{% endif %}
</div>
<div class="ec-input{{ has_errors(form.address.addr01) ? ' error' }}">
<div class="pb-2">
<p class="text-sm font-medium">市区町村</p>
</div>
<div class=" w-full {% if form_errors(form.address.addr01) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.address.addr01, { 'attr': { 'placeholder': 'common.address_sample_Chiyoda-ku' }}) }}</div>
{% if form_errors(form.address.addr01) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
市区町村:{{ form_errors(form.address.addr01) }}
</span>
</div>
{% endif %}
</div>
<div class="ec-input{{ has_errors(form.address.addr02) ? ' error' }}">
<div class="pb-2">
<p class="text-sm font-medium">番地・ビル名</p>
</div>
<div class="w-full {% if form_errors(form.address.addr02) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.address.addr02, { 'attr': { 'placeholder': 'common.address_sample_apartment' }}) }}</div>
{% if form_errors(form.address.addr02) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
番地・ビル名:{{ form_errors(form.address.addr02) }}
</span>
</div>
{% endif %}
</div>
</div>
</div>
</dd>
</dd>
</dl>
<dl>
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">電話番号</p>
<p class="text-sm text-red">※</p>
</dt>
<dd>
<div class="ec-telInput{{ has_errors(form.phone_number) ? ' error' }}">
<div class=" w-full {% if form_errors(form.phone_number) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.phone_number, { 'attr': { 'placeholder': 'common.Input_specification' }}) }}</div>
{% if form_errors(form.phone_number) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
電話番号:{{ form_errors(form.phone_number) }}
</span>
</div>
{% endif %}
</div>
<p class="pt-4 text-xs whitespace-normal font-normal">※携帯電話等の日中につながりやすいお電話番号をご入力ください。</p>
</dd>
</dl>
<dl>
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">メールアドレス</p>
<p class="text-sm text-red">※</p>
</dt>
<dd>
<div class="ec-input{{ has_errors(form.email.first) ? ' error' }} pb-6">
<div class=" w-full {% if form_errors(form.email.first) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.email.first, { 'attr': { 'placeholder': 'common.mail_address_itsukushi' }}) }}</div>
{% if form_errors(form.email.first) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex">
メールアドレス:{{ form_errors(form.email.first) }}
</span>
</div>
{% endif %}
</div>
<div class="ec-input{{ has_errors() ? ' error' }}">
<p class="text-sm pb-2">確認のためもう一度入力してください</p>
<div class=" w-full {% if form_errors(form.email.second) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.email.second, { 'attr': { 'placeholder': 'common.mail_address_itsukushi' }}) }}</div>
{% if form_errors(form.email.second) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex text-wrap md:flex-col">
メールアドレス(確認):{{ form_errors(form.email.second) }}
</span>
</div>
{% endif %}
</div>
<p class="pt-4 text-xs whitespace-normal font-normal">※『itsukushi@manaka-net.com』からのメールを受信できる設定になっていることをご確認下さい。</p>
<p class="pt-2 text-xs whitespace-normal font-normal">※MMSはご利用になれません。キャリアメールは極力お控え頂けますようお願い申し上げます。</p>
</dd>
</dl>
<dl>
<dt class="flex items-center gap-2 pb-4">
<p class="text-xl font-medium leading-8">パスワード</p>
<p class="text-sm text-red">※</p>
</dt>
<dd class="font-normal">
<div class="ec-input{{ has_errors(form.plain_password.first) ? ' error' }} pb-6">
<div class="">
<div class=" w-full {% if form_errors(form.plain_password.first) %} border-red bg-rose-50 {% endif %}">{{ form_widget(form.plain_password.first, {
'attr': { 'placeholder': 'common.password_input_specification'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) },
'type': 'password'
}) }}</div>
</div>
{% if form_errors(form.plain_password.first) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex items-center text-wrap">
パスワード:
<div class="flex flex-col">
{{ form_errors(form.plain_password.first) }}
</div>
</span>
</div>
{% endif %}
</div>
<div class="ec-input{{ has_errors(form.plain_password.second) ? ' error' }}">
<p class="text-sm pb-2">確認のためもう一度入力してください</p>
<div class=" w-full {% if form_errors(form.plain_password.second) %} border-red bg-rose-50 {% endif %}">
{{ form_widget(form.plain_password.second, {
'attr': { 'placeholder': 'common.password_input_specification'|trans },
'type': 'password'
}) }}
</div>
{% if form_errors(form.plain_password.second) %}
<div class="!text-red text-xs flex items-center gap-2 pt-2">
<img src="{{asset('assets/icon/error.svg')}}" alt="Error Image" class="w-3 h-3">
<span class="flex items-center text-wrap">
パスワード(確認):
<div class="flex flex-col">
{{ form_errors(form.plain_password.second) }}
</div>
</span>
</div>
{% endif %}
</div>
</dd>
</dl>
{# エンティティ拡張の自動出力 #}
{% for f in form|filter(f => f.vars.eccube_form_options.auto_render) %}
{% if f.vars.eccube_form_options.form_theme %}
{% form_theme f f.vars.eccube_form_options.form_theme %}
{{ form_row(f) }}
{% else %}
<dl>
<dt>
{% set label_class = f.vars.label_attr.class is defined ? f.vars.label_attr.class : '' %}
{{ form_label(f, f.vars.label, { 'label_attr': {'class': label_class ~ ' ec-label' }}) }}
</dt>
<dd>
<div
class="{{ f.vars.eccube_form_options.style_class }}{{ has_errors(f) ? ' error' }}">
{# EntryType~のファイルを編集しないとテキスト変えられない #}
{{ form_widget(f) }}
{{ form_errors(f) }}
</div>
</dd>
</dl>
{% endif %}
{% endfor %}
<div class="ec-checkbox{{ has_errors(form.user_policy_check) ? ' error' }} hidden">
<label>
{{ form_widget(form.user_policy_check, { 'attr': {'checked': true} }) }}
{{ 'front.entry.agree_with_terms'|trans({ '%url%': url('help_agreement') })|raw }}
</label>
</div>
</div>
<div class="mt-20 md:mt-10 w-full items-center justify-center flex flex-col">
<div class="text-sm flex gap-2 w-full items-center justify-center pb-6">
<a href="/help/agreement" class="border-b hover">会員規約</a>
<p>に同意の上、</p>
</div>
<button class="w-[327px] bg-black text-center py-3 h-[48px] text-sm font-bold text-white rounded-[3px] hover" type="submit" name="mode" value="confirm">確認画面へ</button>
</div>
</form>
</div>
</div>
</div>{% endblock %}