質問 > フロント機能 > 非会員登録から注文入力画面へ遷移した後の注文者編集で生年月日を追加 |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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のままです。
|
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を使っていますが、注文画面側では構造が違うようで、日付の分割処理(セレクトボックスで年月日に分ける場合)も別途作成が必要でしょうか? |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |