バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
doyuma
投稿日時: 2025/7/2 15:47
対応状況: 確認中
新米
登録日: 2025/6/25
居住地:
投稿: 3
注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい
------------------------------------------------------------------------------------------
[EC-CUBE] 3.0.17
[レンタルサーバ] Xserver
[OS] Linux sv132.xserver.jp 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
[PHP] PHP 7.0.33
[データベース] MySQL 5.7.27
[WEBサーバ] Apache
[ブラウザ] Chrome138.0.7204.49(Official Build) (64 ビット)
[導入プラグインの有無] 最近チェックした商品 定休日管理プラグイン 商品詳細スペック表追加プラグイン 商品おすすめ順プラグイン カテゴリスラッグ化プラグイン 最低購入数設定プラグイン
[カスタマイズの有無]] ゲスト購入(shopping/nonmember)のお客様情報に「法人/個人」を追加したいです。ラジオボタンで「法人」または「個人」を選択させます。
以下、変更内容です。

【データベース】
「dtb_order」テーブルに「customer_type」のカラムを追加。
構造
タイプ - smallint(6)
Null - いいえ
デフォルト値 - なし

【src/Eccube/Form/Type/Front/NonMemberType.php】
// ... 既存のuse文など ...

public function buildForm(FormBuilderInterface $builder, array $options)
{
// ... 既存のフィールド ...

// ここを追加
->add('email', 'repeated_email')
->add('customer_type', 'choice', [
'label' => '法人/個人',
'choices' => [
'法人' => 1,
'個人' => 2,
],
'choices_as_values' => true,
'expanded' => true,
'multiple' => false,
'required' => true,
]);

// ... 既存のコード ...
}



【src/Eccube/Entity/Order.php】
// ... 既存のコード ...

/**
* @var \Eccube\Entity\Master\OrderStatusColor
*/
private $OrderStatusColor;

/**
* 顧客タイプ(1:法人, 2:個人)
*
* @var int
*/
private $customer_type;

// ... 既存のコード ...

/**
* Get customer_type
*
* @return int
*/
public function getCustomerType()
{
return $this->customer_type;
}

/**
* Set customer_type
*
* @param int $customer_type
* @return Order
*/
public function setCustomerType($customer_type)
{
$this->customer_type = (int)$customer_type;
return $this;
}


【src/Eccube/Service/ShoppingService.php】
/**
* フォームデータを更新
*
* @param Order $Order
* @param array $data
*/
public function setFormData(Order $Order, array $data)
{
file_put_contents(__DIR__ . '/formdata_controller.log', print_r($data, true));

// お問い合わせ
$Order->setMessage($data['message']);

// ↓追加
if (isset($data['customer_type'])) {
$Order->setCustomerType($data['customer_type']);
} elseif (isset($data['nonmember']['customer_type'])) {
$Order->setCustomerType($data['nonmember']['customer_type']);
}
    // ここまで追加

// お届け先情報を更新
$shippings = $data['shippings'];
foreach ($shippings as $Shipping) {

$deliveryTime = $Shipping->getDeliveryTime();
if (!empty($deliveryTime)) {
$Shipping->setShippingDeliveryTime($deliveryTime->getDeliveryTime());
}

}

}


【app/template/novelty/Shopping/nonmember.twig】

// ... 既存のコード ...

<ul class="border-dotted-top list-unstyled mb-0">

// ... 既存のコード ...

<li class="border-dotted-bottom pr-3 py-4 py-lg-3">
<div class="row">
<div class="col-lg-3">
{{ form_label(form.customer_type, null, {
'label_attr':{
'class':'mb-lg-0'
}
}) }}
</div>
<div class="col-lg-8">
{{ form_widget(form.customer_type) }}
{{ form_errors(form.customer_type) }}
</div>
</li>
</ul>


【app/template/novelty/Shopping/index.twig】

// ... 既存のコード ...
<tr class="align-top">
<td class="text-nowrap">
<div class="mb-2">
法人/個人
</div>
</td>
<td class="put-colon d-flex text-break">
<div class="d-flex align-items-center flex-fill mb-2">
{% if Order.customer_type == 1 %}
法人
{% elseif Order.customer_type == 2 %}
個人
{% else %}
(未選択)
{% endif %}
</div>
</td>
</tr>


[現象] ラジオボタンの設置はできましたが、次のお客様情報確認画面(/shopping)で(未選択)となります。データベースでは、dtb_orderテーブルのcustomer_typeカラムに0が登録されており、理想は「法人」を選択すると1、「個人」を選択すると2が登録されるようにしたいです。キャッシュをクリアしながら作業しましたが、実装できませんでした。
------------------------------------------------------------------------------------------

ご確認の程よろしくお願いいたします。
h_tanaka
投稿日時: 2025/7/2 15:57
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 2018
Re: 注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい
setFormData() は、ご注文内容確認で呼ばれます。
ゲスト購入ページの情報を保存するなら、 ShoppingController->nonmember() ですね。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

doyuma
投稿日時: 2025/7/2 16:34
対応状況: −−−
新米
登録日: 2025/6/25
居住地:
投稿: 3
Re: 注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい
トエビス株式会社
田中 宏典 様

ご返信ありがとうございます。

早速以下を試してみましたが、結果変わりませんでした。


【src/Eccube/Service/ShoppingService.php】
public function copyToOrderFromCustomer(Order $Order, Customer $Customer = null)
{
if (is_null($Customer)) {
return $Order;
}

if ($Customer->getId()) {
$Order->setCustomer($Customer);
}
    $Order
  // ...既存のコード...
   ->setCustomerType($Customer->getCustomerType());


【src/Eccube/Controller/ShoppingController.php】
/**
* 非会員処理
*/
public function nonmember(Application $app, Request $request)
{
  // ...既存のコード...
  $Customer
// ...既存のコード...
->setCustomerType($data['customer_type']);


【src/Eccube/Entity/Customer.php】
// ...既存のコード...
/**
* 顧客タイプ(1:法人, 2:個人)
*
* @var int
*/
private $customer_type;

// ...既存のコード...

/**
* Get customer_type
*
* @return int
*/
public function getCustomerType()
{
return $this->customer_type;
}

/**
* Set customer_type
*
* @param int $customer_type
* @return Customer
*/
public function setCustomerType($customer_type)
{
$this->customer_type = (int)$customer_type;
return $this;
}

私の方で見当違いでしたら申し訳ありません。
どのファイルの内容を変更するか教えていただけると助かります。

よろしくお願いいたします。
h_tanaka
投稿日時: 2025/7/2 16:52
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 2018
Re: 注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい
コードからは他におかしなところは読み取れませんでした。
$data や $Customer に正しく値が入っているか、デバッグしてみてください。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

doyuma
投稿日時: 2025/7/2 17:59
対応状況: 確認中
新米
登録日: 2025/6/25
居住地:
投稿: 3
Re: 注文ページのお客様情報に「法人/個人」のラジオボタンを追加したい
ご確認ありがとうございました。

AIにも確認したところ、
「PHP側(Orderエンティティ)には値が入っているので、DB保存時の問題が濃厚です。」
と回答がありました。

再度、

・SSH接続でキャッシュクリア
・データベースの「dtb_order」テーブルに「customer_type」カラムとがあること
・「customer_type」の構造の確認

を行いましたが、変わりませんでした。

なにか分かりましたら、またご教授いただければ幸いです。
よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は107,943名です
総投稿数は112,704件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2334
5
umebius
2085
6
h_tanaka
2018
7
yuh
1900
8
mcontact
1732
9
red
1582
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
805
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
balisys
502


ネットショップの壺

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

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