バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 注文途中でEntityの追加項目の値が消える

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tomochika
投稿日時: 2021/12/27 14:49
対応状況: −−−
新米
登録日: 2008/7/18
居住地:
投稿: 6
注文途中でEntityの追加項目の値が消える
[EC-CUBE] 4.1.0 新規インストール
[レンタルサーバ] 自社サーバー
[OS] CentOs 7
[PHP] 7.3.25/FPM
[データベース] MySQL 5.6.45
[WEBサーバ] Apache
[導入プラグインの有無] WebAPI DeliveryPlus4
[現象]
受注項目を追加、各所のwebを参考に
app/Customize/Entity/OrderTrait.phpを追加
=========
<?php

namespace Customize\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;

/**
* @EntityExtension("Eccube\Entity\Order")
*/
trait OrderTrait
{
/**
* @var string|null
* @ORM\Column(type="string", length=14, nullable=true)
* @Eccube\Annotation\FormAppend(
* auto_render=false,
* type="\Symfony\Component\Form\Extension\Core\Type\TextType",
* options={
* "required": false,
* "label": "携帯電話番号《日中ご連絡先》",
* "attr": {"placeholder": "例:09000000000"}
* })
*/
private $mobile_number;

/**
* @return string|null
*/
public function getMobileNumber()
{
return $this->mobile_number;
}

/**
* @param string|null $mobile_number
* @return OrderTrait
*/
public function setMobileNumber($mobile_number)
{
$this->mobile_number = $mobile_number;
return $this;
}
}
================================
キャッシュ削除、プロキシ再生成、dtb_order dtb_shippingにmobile_numberのフィールド追加
デバックモードにて Eccube\Entity\Order に mobile_numberの項目と値が追加されていることを確認。

カートに商品を入れ、レジに進む「ご注文手続き画面」表示、ここまではmobile_numberの項目/数値が引き回されていることを確認。
但し、以下の動作をすると以降電話番号の数値が引き回されなくなりますEntityには項目名のみが残っています。

■確認するボタンを押し「ご注文内容のご確認」画面に進む
■「ご注文手続き画面」にて支払い方法や配送方法を変更する

上記の動作をすると追加したEntityの値が消えてしまいます。
以降の注文手続き画面でも値がないので、当然注文を完了しても dtb_orderのmobile_numberフィールドには値は入っておりません。

先にapp/Customize/Entity/CustomerTrait.phpでdtb_customerにmobile_number項目を追加したカスタマイズはうまくいっております。

ただ、その情報をdtb_orderのmobile_numberフィールドに入れたいだけなのですが、行き詰っております。

ご助言等あれば何卒よろしくお願い申し上げます。
umebius
投稿日時: 2021/12/27 17:22
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 注文途中でEntityの追加項目の値が消える
FormAppendが原因ではないかと思います。
管理画面でフォームを使うためにFormAppendを使用されていると思いますが、
FormAppendによって注文手続き画面のフォームsrc/Eccube/Form/Type/Shopping/OrderType.phpにも
項目が自動登録されるはずなので、「画面フォームを表示していない=データが送信されない」項目はNULLとなってしまいます。

FormExtensionで管理画面のフォームにのみ項目追加すればうまくいくのではないかと思います。
https://doc4.ec-cube.net/customize_formtype


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

tomochika
投稿日時: 2021/12/28 12:24
対応状況: −−−
新米
登録日: 2008/7/18
居住地:
投稿: 6
Re: 注文途中でEntityの追加項目の値が消える
ご返信ありがとうございます。
ご指摘の通り、FormAppend「画面フォームを表示していない=データが送信されない」でしたので、
FormAppendを利用しないようにOrderTrait.phpを修正しますと、
無事カート内で引きまわせるようになり、注文完了。dtb_orderテーブルの指定カラムに登録されました。
dtb_shippingには登録されませんでしたが。
非会員の購入の場合はdtb_shippingが配送関係のすべてになるようですのでdtb_shippingのカラムにも登録されるようチャレンジしてみます。

FormAppendを利用しないと、管理画面では利用できない状態、
.twig内で{{ form_widget(form.mobile_number) }}がエラーになりますので、こちらはFormExtensionにて拡張してみます。

umebius様のサイトを参考にさせていただき、チャレンジしておりましたが、まさかのご本人様からのアドバイス、ありがとうございます!
tomochika
投稿日時: 2021/12/28 16:56
対応状況: −−−
新米
登録日: 2008/7/18
居住地:
投稿: 6
Re: 注文途中でEntityの追加項目の値が消える
FormAppendを使わずに管理画面側にも実装できました
symfonyのバージョンのせいか、getExtendedType()が実装されてないされてないとエラーを頂き頭にきておりましたが。
getExtendedTypes()
なんですね。

MobileNumberExtension.php
----------------------------
<?php

namespace Customize\Form\Extension;

use Eccube\Form\Type\Admin\OrderType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Validator\Constraints as Assert;


class MobileNumberExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('mobile_number', TextType::class, [
'label' => 'けいたいばんごう',
'required' => false,
'attr' => [
'maxlength' => 14,
'placeholder' => 'testnow',
],
'eccube_form_options' => [
'auto_render' => false,
],
'constraints' => [
new Assert\Length(['max' => 14]),
],
]);
}
/**
* {@inheritdoc}
*/
public function getExtendedTypes()
{
return [OrderType::class];
}
}
umebius
投稿日時: 2021/12/28 19:43
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 注文途中でEntityの追加項目の値が消える
そうですね、Symfonyのバージョンが変わったので
4.0ではgetExtendedType()でしたが、
4.1ではgetExtendedTypes()になっています。

また何かあればご投稿ください。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,082名です
総投稿数は110,032件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1649
8
red
1570
9
mcontact
1297
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.