バージョン選択

フォーラム

メニュー

オンライン状況

60 人のユーザが現在オンラインです。 (47 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 59
aloexpress もっと...

サイト内検索

質問 > フロント機能 > 非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Rights
投稿日時: 2024/7/5 15:25
対応状況: −−−
一人前
登録日: 2019/3/12
居住地:
投稿: 114
Re: 非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加
購入フローを再考したので、クローズとさせてください。
Rights
投稿日時: 2024/7/2 12:32
対応状況: −−−
一人前
登録日: 2019/3/12
居住地:
投稿: 114
Re: 非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加
値の取得、表示までは確認できましたが、注文画面の生年月日の入力がテキストで、年月日に分割されない点と、変更の際エラーとなります。

[app/Customize/Controller/NonMemberShoppingController.php]
$Order
->setName01($data['customer_name01'])
->setName02($data['customer_name02'])
->setKana01($data['customer_kana01'])
->setKana02($data['customer_kana02'])
->setCompanyName($data['customer_company_name'])
->setPhoneNumber($data['customer_phone_number'])
->setPostalCode($data['customer_postal_code'])
->setPref($pref)
->setAddr01($data['customer_addr01'])
->setAddr02($data['customer_addr02'])
->setEmail($data['customer_email'])
->setBirth($data['customer_birth']); ← 追記

$this->entityManager->flush();

$this->session->set(OrderHelper::SESSION_NON_MEMBER, [
'name01' => $data['customer_name01'],
'name02' => $data['customer_name02'],
'kana01' => $data['customer_kana01'],
'kana02' => $data['customer_kana02'],
'company_name' => $data['customer_company_name'],
'phone_number' => $data['customer_phone_number'],
'postal_code' => $data['customer_postal_code'],
'pref' => $pref,
'addr01' => $data['customer_addr01'],
'addr02' => $data['customer_addr02'],
'email' => $data['customer_email'],
'birth' => $data['customer_birth'], ← 追記
]);

[app/Customize/Form/Type/Shopping/OrderType.php]
function buildForm

$builder->add('message', TextareaType::class, [
'required' => false,
'constraints' => [
new Length(['min' => 0, 'max' => 3000]),
],
])->add('Shippings', CollectionType::class, [
'entry_type' => ShippingType::class,
'by_reference' => false,
])->add('redirect_to', HiddenType::class, [
'mapped' => false,
])->add('birth', DateType::class, [
'widget' => 'choice',
'format' => 'yyyy-MM-dd',
'years' => range(date('Y') - 100, date('Y')),
'label' => '生年月日',
'required' => true,
'constraints' => [
new Assert\NotBlank([
'message' => '生年月日を入力してください。',
]),
new Assert\Date([
'message' => '有効な日付を入力してください。',
]),
],
]);

[app/template/default/Shopping/index.twig]
<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>
値がないとシステムエラーになります。
システムエラーが発生しました。 ["Symfony\\Component\\Form\\FormRenderer::searchAndRenderBlock(): Argument #1 ($view) must be of type Symfony\\Component\\Form\\FormView, null given,

<dl>
<dt>
<label class="ec-label required">{{ '生年月日'|trans }}</label>
<span class="ec-required">{{ '必須'|trans }}</span>
</dt>
<dd>
<div class="ec-birth">
<span class="customer-form customer-birth"></span>
</div>
</dd>
</dl>
取得した生年月日が表示されますが、年月日で分割されず、テキストボックスで表示され、変更を行うと「更新に失敗しました。入力内容を確認してください。」となります。

mcontact
投稿日時: 2024/6/29 10:10
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1464
Re: 非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加
/Customize/Service/OrderHelper.php
function getNonMember 298行目の$Customerに、->setBirth($data['birth']);追加

カスタマイズを行っている様ですが、
EC-CUBE標準と機能が同じであるならば、
getNonMemberメソッドはセッション情報から$Customerへ情報を再割り当てをしているだけです。
セッション情報に生年月日を保存しない限りは
->setBirth($data['birth']);
をコードを追加してもCustomerの生年月日はnullのままです。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Rights
投稿日時: 2024/6/28 14:11
対応状況: 解決済
一人前
登録日: 2019/3/12
居住地:
投稿: 114
非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加
▼テンプレート
[EC-CUBE]4.2

非会員購入で、生年月日を必須にして注文画面へ
注文者情報に生年月日の表示と変更を行いたいのですが、

非会員情報の入力フォームから、注文画面に入力した生年月日の値が渡らない(取得できていない)のですが、


app/template/default/Shopping/nonmember.twig

{# ▼追記部分の抜粋▼ #}
<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>
{# ▲追記部分の抜粋▲ #}

app/template/default/Shopping/index.twig

<div class="ec-orderAccount__account non-customer-display">
<p class="ec-halfInput">{{ ''|trans }}<span class="customer-edit customer-name01">{{ Order.name01 }}</span> <span class="customer-edit customer-name02">{{ Order.name02 }}</span>{{ ' 様'|trans }}</p>
<p class="ec-halfInput"><span class="customer-edit customer-kana01">{{ Order.kana01 }}</span> <span class="customer-edit customer-kana02">{{ Order.kana02 }}</span></p>
<p class="ec-input"><span class="customer-edit customer-company_name">{{ Order.companyName }}</span></p>
<p class="ec-zipInput">〒<span class="customer-edit customer-postal_code">{{ Order.postal_code }}</span></p>
<p class="ec-input"><span class="customer-edit customer-pref">{{ Order.pref }}</span><span class="customer-edit customer-addr01">{{ Order.addr01 }}</span><span class="customer-edit customer-addr02">{{ Order.addr02 }}</span></p>
<p class="ec-telInput"><span class="customer-edit customer-phone_number">{{ Order.phone_number }}</span></p>
<p class="ec-input"><span class="customer-edit customer-email">{{ Order.email }}</span></p>
{# ▼追記部分▼ #}
<p class="ec-birth"><span class="customer-edit customer-birth">{{ Order.birth }}</span></p>
{# ▲追記部分▲ #}
</div>



<dl>
<dt>
<label class="ec-label required">{{ 'メールアドレス'|trans }}</label>
<span class="ec-required">{{ '必須'|trans }}</span>
</dt>
<dd>
<div class="ec-input">
<span class="customer-form customer-email"></span>
</div>
</dd>
</dl>
<dl>
<dt>
<label class="ec-label required">{{ '生年月日'|trans }}</label>
<span class="ec-required">{{ '必須'|trans }}</span>
</dt>
<dd>
<div class="ec-birth">
<span class="customer-form customer-birth"></span>
</div>
</dd>
</dl>
</div>
<div class="mod-button" style="display:none;">
<span id="customer-ok"><button type="button" class="ec-inlineBtn">{{ 'OK'|trans }}</button></span>
<span id="customer-cancel"><button type="button" class="ec-inlineBtn">{{ 'キャンセル'|trans }}</button></span>
</div>
<input type="hidden" id="customer-name01" class="customer-in" name="customer_name01" value="{{ Order.name01 }}">
<input type="hidden" id="customer-name02" class="customer-in" name="customer_name02" value="{{ Order.name02 }}">
<input type="hidden" id="customer-kana01" class="customer-in" name="customer_kana01" value="{{ Order.kana01 }}">
<input type="hidden" id="customer-kana02" class="customer-in" name="customer_kana02" value="{{ Order.kana02 }}">
<input type="hidden" id="customer-company-name" class="customer-in" name="customer_company_name" value="{{ Order.companyName }}">
<input type="hidden" id="customer-postal_code" class="customer-in" name="customer_postal_code" value="{{ Order.postal_code }}">
<input type="hidden" id="customer-pref" class="customer-in" name="customer_pref" value="{{ Order.pref }}">
<input type="hidden" id="customer-addr01" class="customer-in" name="customer_addr01" value="{{ Order.addr01 }}">
<input type="hidden" id="customer-addr02" class="customer-in" name="customer_addr02" value="{{ Order.addr02 }}">
<input type="hidden" id="customer-phone_number" class="customer-in" name="customer_phone_number" value="{{ Order.phone_number }}">
<input type="hidden" id="customer-email" class="customer-in" name="customer_email" value="{{ Order.email }}">
{# ▼追記部分▼ #}
<input type="hidden" id="customer-birth" class="customer-in" name="customer_birth" value="{{ Order.birth }}">
{# ▲追記部分▲ #}

/Customize/Service/OrderHelper.php
function getNonMember 298行目の$Customerに、->setBirth($data['birth']);追加

/Customize/Controller/NonMemberShoppingController.php
use OrderHelper.phpのパスを変更

function customerValidation に、以下を追加
$errors[] = $this->validator->validate(
$data['customer_birth'],
[
new Assert\NotBlank(),
new Assert\Date(['message' => 'form_error.numeric_only']),
]
);

/Customize/Controller/ShoppingController.php
use OrderHelper.phpのパスを変更



nonmember.twigでは、form_widgetを使っていますが、注文画面側では構造が違うようで、日付の分割処理(セレクトボックスで年月日に分ける場合)も別途作成が必要でしょうか?

スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は93,396名です
総投稿数は111,041件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1848
7
h_tanaka
1755
8
red
1574
9
mcontact
1464
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.