{#
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 stylesheet %}
<style>
.dzx-table_row_detail {
min-width: auto;
width:100%;
}
.bank_branch_list tbody {
display:block;
height:195px;
overflow-y:scroll;
}
.bank_branch_list thead, tbody tr {
display:table;
width:100%;
table-layout:fixed;
}
.bank_branch_list thead {
width: calc( 100% - 1em )
}
.bank_branch_select {
padding: 5px;
font-size: 12px;
}
.ec-select select {
width:100%;
}
</style>
{% endblock stylesheet %}
{% block javascript %}
<script src="//yubinbango.github.io/yubinbango/yubinbango.js" charset="UTF-8"></script>
<script>
var sys_AllowIsApp = true;
$(function() {
var branchList = null;
$("#entry_bank_bank_name").on("change", function(){
var t = $(this);
var bankid = t.val() || '0';
branchList=null;
$.ajax({
type: "POST",
url: "/bank/list/" + bankid,
data: JSON.stringify({"id": bankid}),
dataType : "json",
}).done(function(data){
var isSelected = false;
if(data.status!="OK") return;
var opt = $("#bank_branch_code");
var txt = $("#entry_bank_branch_code");
opt.find("option").remove().end();
opt.append('<option value="">支店を選択</option>');
$.each(data.data, function(i, dt){
var item = $("<option></option>");
item.prop("value", dt.id);
item.text(dt.name);
if( txt.val() == dt.id ){
isSelected = true;
item.prop("selected", true);
$("#entry_bank_branch_code").val( dt.id );
$("#bank_branch_id").val(dt.branchCode);
}
item.data("branchCode", dt.branchCode);
opt.append(item);
});
branchList = data.data;
if(!isSelected){
$("#entry_bank_branch_code").val("");
$("#bank_branch_id").val("");
}
return true;
});
});
$("#bank_branch_code").on("change", function(){
var opt = $(this).find(":selected");
$("#entry_bank_branch_code").val( $(this).val() );
$("#bank_branch_id").val(opt.data("branchCode"));
});
$("#bank_branch_id").on("keyup", function(){
var isSelected = false;
var opt = $("#bank_branch_code").find("option");
$("#bank_branch_code").find("option").prop("selected", false);
$("#entry_bank_branch_code").val("");
$.each(opt, function(){
var o = $(this);
if(o.data("branchCode") == $("#bank_branch_id").val()){
o.prop("selected", true);
isSelected = true;
$("#entry_bank_branch_code").val(o.val());
}
});
if(!isSelected){
if($("#bank_branch_id").val().length >= 3){
$('#ec-modal-checkbox').prop('checked', true);
}
}
});
$("#entry_bank_bank_name").trigger("change");
$(".btn_bank_search").on("click", function(){
if(branchList == null || branchList.length <= 0){
$('#ec-modal-bank').prop('checked', true);
}else{
$('#ec-modal-banksearch').prop('checked', true);
$(".bank_branch_list").hide();
}
return false;
});
$(".btn_bank_query").on("click", function(){
var table = $(".bank_branch_list");
var tbody = $("<tbody></tbody>");
table.find("tbody").remove().end();
$.each(branchList, function(i, dt){
if( dt.name.indexOf($("#branch_keyword").val()) >= 0 || dt.branchCode.indexOf($("#branch_keyword").val()) >= 0 ){
var tr = $("<tr></tr>");
var btn = $('<a class="ec-inlineBtn bank_branch_select" href="#">選択する</a>');
var branchSel = $('<td style="width:70px;"></td>');
var branchCode = $('<td style="width:120px;"></td>');
var branchName = $("<td></td>");
btn.data("value", dt.branchCode);
branchCode.text(dt.branchCode);
branchName.text(dt.name);
branchSel.append(btn);
tr.append(branchSel);
tr.append(branchCode);
tr.append(branchName);
btn.on("click", function(){
var $this = $(this);
$('#bank_branch_id').val(btn.data("value"));
$('#bank_branch_id').trigger("keyup");
$('#ec-modal-banksearch').prop('checked', false);
return false;
});
tbody.append(tr);
}
});
if(tbody.find("tr").length==0){
var tr = $('<tr><td colspan=3>支店が見つかりません</td></tr>');
tbody.append(tr);
}
table.append(tbody);
$(".bank_branch_list").show();
return false;
});
});
</script>
{% endblock javascript %}
{% block main %}
<div class="ec-registerRole">
<div class="ec-pageHeader">
<h1>{{ '新規会員登録'|trans }}</h1>
</div>
<div class="ec-off1Grid">
<div class="ec-off1Grid__cell">
<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="ec-borderedDefs">
<dl>
<dt>
{{ form_label(form.name, 'お名前', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.name.name01, form.name.name02) ? ' error'}}">
{{ form_widget(form.name.name01, { 'attr': { 'placeholder': '姓' }}) }}
{{ form_widget(form.name.name02, { 'attr': { 'placeholder': '名' }}) }}
{{ form_errors(form.name.name01) }}
{{ form_errors(form.name.name02) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.kana, 'お名前(カナ)', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.kana.kana01, form.kana.kana02) ? ' error'}}">
{{ form_widget(form.kana.kana01, { 'attr': { 'placeholder': 'セイ' }}) }}
{{ form_widget(form.kana.kana02, { 'attr': { 'placeholder': 'メイ' }}) }}
{{ form_errors(form.kana.kana01) }}
{{ form_errors(form.kana.kana02) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.company_name, '会社名', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.company_name) ? ' error' }}">
{{ form_widget(form.company_name) }}
{{ form_errors(form.company_name) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.address, '住所', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-zipInput{{ has_errors(form.postal_code) ? ' error' }}"><span>{{ '〒'|trans }}</span>
{{ form_widget(form.postal_code) }}
<div class="ec-zipInputHelp">
<div class="ec-zipInputHelp__icon">
<div class="ec-icon"><img
src="{{ asset('assets/icon/question-white.svg') }}" alt="">
</div>
</div><a href="https://www.post.japanpost.jp/zipcode/" target="_blank"><span>{{ '郵便番号検索'|trans }}</span></a>
</div>
{{ form_errors(form.postal_code) }}
</div>
<div class="ec-select{{ has_errors(form.address.pref) ? ' error' }}">
{{ form_widget(form.address.pref) }}
{{ form_errors(form.address.pref) }}
</div>
<div class="ec-input{{ has_errors(form.address.addr01) ? ' error' }}">
{{ form_widget(form.address.addr01, { 'attr': { 'placeholder': '市区町村名(例:大阪市北区)' }}) }}
{{ form_errors(form.address.addr01) }}
</div>
<div class="ec-input{{ has_errors(form.address.addr02) ? ' error' }}">
{{ form_widget(form.address.addr02, { 'attr': { 'placeholder': '番地・ビル名(例:西梅田1丁目6-8)' }}) }}
{{ form_errors(form.address.addr02) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.phone_number, '電話番号', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-telInput{{ has_errors(form.phone_number) ? ' error' }}">
{{ form_widget(form.phone_number) }}
{{ form_errors(form.phone_number) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.email, 'メールアドレス', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-input{{ has_errors(form.email.first) ? ' error' }}">
{{ form_widget(form.email.first, { 'attr': { 'placeholder': '例:ec-cube@example.com' }}) }}
{{ form_errors(form.email.first) }}
</div>
<div class="ec-input{{ has_errors(form.email.second) ? ' error' }}">
{{ form_widget(form.email.second, { 'attr': { 'placeholder': '確認のためもう一度入力してください' }}) }}
{{ form_errors(form.email.second) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.plain_password, 'パスワード', { 'label_attr': {'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-input{{ has_errors(form.plain_password.first) ? ' error' }}">
{{ form_widget(form.plain_password.first, {
'attr': { 'placeholder': '半角英数記号%min%〜%max%文字'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) },
'type': 'password'
}) }}
{{ form_errors(form.plain_password.first) }}
</div>
<div class="ec-input{{ has_errors(form.plain_password.second) ? ' error' }}">
{{ form_widget(form.plain_password.second, {
'attr': { 'placeholder': '確認のためもう一度入力してください'|trans },
'type': 'password'
}) }}
{{ form_errors(form.plain_password.second) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.birth, '生年月日', { 'label_attr': {'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-birth{{ has_errors(form.birth) ? ' error' }}">
{{ form_widget(form.birth.year) }}<span>/</span>
{{ form_widget(form.birth.month) }}<span>/</span>
{{ form_widget(form.birth.day) }}
{{ form_errors(form.birth) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.sex, '性別', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-radio{{ has_errors(form.sex) ? ' error' }}">
{{ form_widget(form.sex) }}
{{ form_errors(form.sex) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.job, '職業', { 'label_attr': {'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-select{{ has_errors(form.job) ? ' error' }}">
{{ form_widget(form.job) }}
{{ form_errors(form.job) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.bank.bank_name, '金融機関名', { 'label_attr': {'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-select{{ has_errors(form.bank.bank_name) ? ' error' }}">
{{ form_widget(form.bank.bank_name) }}
{{ form_errors(form.bank.bank_name) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.bank_branch_code, '支店名', { 'label_attr': {'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput">
<input type="text" id="bank_branch_id" maxlength=3 class="form-control" placeholder="支店番号">
<button class="ec-headerSearch__keywordBtn btn_bank_search" type="submit" style="width:36px;height:36px;">
<div class="ec-icon">
<img src="/html/template/dzx02/assets/icon/search-dark.svg" alt="">
</div>
</button>
</div>
<div class="ec-select{{ has_errors(form.bank_branch_code) ? ' error' }}">
<select id="bank_branch_code" name="bank_branch_code" class="p-bank-name form-control" placeholder="支店名">
</select>
{{ form_widget(form.bank_branch_code, { 'attr': { 'style': 'display:none;' }}) }}
{{ form_errors(form.bank_branch_code) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.bank_account, '口座番号', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.bank_account) ? ' error' }}">
{{ form_widget(form.bank_account, { 'attr': { 'placeholder': '口座番号(例:0000000)' }}) }}
{{ form_errors(form.bank_account) }}
</div>
</dd>
</dl>
<dl>
<dt>
{{ form_label(form.bank_holder, '口座名義', { 'label_attr': { 'class': 'ec-label' }}) }}
</dt>
<dd>
<div class="ec-halfInput{{ has_errors(form.bank_holder) ? ' error' }}">
{{ form_widget(form.bank_holder, { 'attr': { 'placeholder': '口座名義(例:トウキョウフジダイガク)' }}) }}
{{ form_errors(form.bank_holder) }}
</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' }}">
{{ form_widget(f) }}
{{ form_errors(f) }}
</div>
</dd>
</dl>
{% endif %}
{% endfor %}
</div>
<div class="ec-registerRole__actions">
<div class="ec-checkbox{{ has_errors(form.user_policy_check) ? ' error' }}">
<label>
{{ form_widget(form.user_policy_check) }}
{{ '<a class="ec-link" href="%url%" target="_blank">利用規約</a>に同意してお進みください'|trans({ '%url%': url('help_agreement') })|raw }}
</label>
{{ form_errors(form.user_policy_check) }}
</div>
<div class="ec-off4Grid">
<div class="ec-off4Grid__cell">
<button class="ec-blockBtn--action" type="submit" name="mode" value="confirm">{{ '同意する'|trans }}</button>
<a class="ec-blockBtn--cancel" href="{{ url('homepage') }}">{{ '同意しない'|trans }}</a>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="ec-modal" id="bankError">
<input type="checkbox" id="ec-modal-checkbox" class="checkbox">
<div class="ec-modal-overlay">
<label for="ec-modal-checkbox" class="ec-modal-overlay-close"></label>
<div class="ec-modal-wrap">
<label for="ec-modal-checkbox" class="ec-modal-close"><span class="ec-icon"><img src="/html/template/dzx02/assets/icon/cross-dark.svg" alt=""/></span></label>
<div id="ec-modal-header" class="text-center">支店番号が見つかりません</div>
<div class="ec-modal-box">
<div class="ec-role">
<label for="ec-modal-checkbox" class="ec-inlineBtn--cancel">閉じる</label>
</div>
</div>
</div>
</div>
</div>
<div class="ec-modal" id="bankError">
<input type="checkbox" id="ec-modal-bank" class="checkbox">
<div class="ec-modal-overlay">
<label for="ec-modal-bank" class="ec-modal-overlay-close"></label>
<div class="ec-modal-wrap">
<label for="ec-modal-bank" class="ec-modal-close"><span class="ec-icon"><img src="/html/template/dzx02/assets/icon/cross-dark.svg" alt=""/></span></label>
<div id="ec-modal-header" class="text-center">金融機関名を選択してください</div>
<div class="ec-modal-box">
<div class="ec-role">
<label for="ec-modal-bank" class="ec-inlineBtn--cancel">閉じる</label>
</div>
</div>
</div>
</div>
</div>
<div class="ec-modal">
<input type="checkbox" id="ec-modal-banksearch" class="checkbox">
<div class="ec-modal-overlay">
<label for="ec-modal-banksearch" class="ec-modal-overlay-close"></label>
<div class="ec-modal-wrap">
<label for="ec-modal-banksearch" class="ec-modal-close"><span class="ec-icon"><img src="/html/template/dzx02/assets/icon/cross-dark.svg" alt=""/></span></label>
<div id="ec-modal-header">
<div class="ec-borderedDefs">
<dl>
<dt>
支店番号または支店名
</dt>
<dd>
<div class="ec-halfInput">
<input type="text" id="branch_keyword" class="form-control" placeholder="番号または支店名を入力">
<a class="ec-inlineBtn btn_bank_query" href="#">検索</a>
</div>
</dd>
</dl>
<table class="dzx-table_row_detail bank_branch_list">
<thead>
<tr>
<th style="width:70px;">選択</th>
<th style="width:120px;">支店番号</th>
<th>支店名</th>
</tr>
</thead>
</table>
</div>
</div>
<div class="ec-modal-box">
<div class="ec-role">
<label for="ec-modal-banksearch" class="ec-inlineBtn--cancel">閉じる</label>
</div>
</div>
</div>
</div>
</div>
{% endblock %}