バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > [EC-CUBE4]会員項目に選択項目を追加したいです

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
toku712
投稿日時: 2019/12/17 19:25
対応状況: −−−
新米
登録日: 2019/11/1
居住地:
投稿: 4
[EC-CUBE4]会員項目に選択項目を追加したいです
いつも参考にさせて頂いております。
当方PHP・symfony関係は全くの初心者です。
今回初めてご相談させて頂きます。

▼希望
会員登録画面フォームの、独自プラグインで追加した項目の1つ上に、セレクトボックスで選択できる項目を追加して、会員管理画面等で追加項目の確認が出来るようにしたいです。

▼使用環境
[EC-CUBE] 4.0.2 (新規インストール)
[レンタルサーバ] さくらのレンタルサーバ スタンダード
[サーバーOS] FreeBSD 11.2
[PHP] 7.3.10
[データベース] MySQL 5.7
[WEBサーバ] Apache
[ブラウザ] Google Chrome
[導入プラグインの有無] 独自プラグイン使用
[カスタマイズの有無]
下記の記事を参考に独自プラグインで会員項目を一つ追加しています。
https://a-zumi.net/ec-cube4-add-customer-field/


▼現在の問題
他の方のフォーラム等も調べつつ試行錯誤して、会員管理画面に項目欄は表示されましたが、
EntryType.phpで指定した項目が表示されない+新規会員登録ページでは項目も表示されない状態です。


現時点では、下記2ファイルを変更して、会員項目DBに"customer_type"カラムを追加した所まで進めております。

・(EC-CUBEディレクトリ)/app/Customize/Entity/CustomerTrait.php 13行目から

trait CustomerTrait {
	/**
     * @ORM\Column(name="customer_type", type="string", length=255, nullable=true)
     * @Eccube\FormAppend(
     *  auto_render=true,
     *  type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType",
     *  options={
     *    "required": true,
     *    "label": "会員種類",
     *  }
     * )
     */
    private $customer_type;

    public function getcustomertype() {
        return $this->customer_type;
    }

    public function setcustomertype($customer_type) {
        $this->customer_type = $customer_type;

        return $this;
    }

    (最初に追加した項目…中略)

}


・(EC-CUBEディレクトリ)/src/Eccube/Form/Type/Front/EntryType.php 97行目辺りから

->add('job', JobType::class, [
    'required' => false,
])        // ";"を削除
->add('customer_type', ChoiceType::class, [
    'required' => true,
    'expanded' => true,
    'multiple' => false,
    'choices'  => [
        '一般会員'   => 'normal',
        'プレミアム会員' => 'premium',
    ],
]);

※また、EntryType.phpの31行目に下記を追加しています。
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;


上記の後にgetcustomertype()等をいじってみましたが、エラーになってしまい。
これ以上どのようにすれば良いか分かりかねています。

恐縮ですが、対処方法をご教示いただけますと幸いです。
どうぞよろしくお願い致します。
umebius
投稿日時: 2019/12/17 20:16
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: [EC-CUBE4]会員項目に選択項目を追加したいです

引用:
会員管理画面に項目欄は表示されましたが、EntryType.phpで指定した項目が表示されない

→ 空のセレクトボックスが表示されるということでしょうか?
だとすると、FormAppendでchoicesを指定していないためではないかと思います。

FormAppendでchoicesを指定するか、src/Eccube/Form/Type/Admin/CustomerType.phpでEntryTypeと同様にaddしてやる必要があるかと思います(管理画面のフォームはEntryTypeではないので、FormAppendの内容が使用されていると思います)


引用:
+新規会員登録ページでは項目も表示されない状態です。


こちらはEntryTypeとFormAppendの二重指定になっていますが、その場合EntryTypeの指定が優先適用されていると思います。

画面に表示されない理由としては、EntryTypeでauto_renderが指定されておらず、また、テンプレートでもフォームを表示するようにform_widgetなどを記述されていないためかと思います。

eccube_form_optionsを追加するといかがでしょうか?

->add('customer_type', ChoiceType::class, [
                'required' => true,
                'expanded' => true,
                'multiple' => false,
                'choices'  => [
                    '一般会員'   => 'normal',
                    'プレミアム会員' => 'premium',
                ],
                'eccube_form_options' =>
                [
                    'auto_render' => true,
                    'form_theme' => null,
                    'style_class' => 'ec-radio',
                ]
            ])


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

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

toku712
投稿日時: 2019/12/18 14:46
対応状況: 解決済
新米
登録日: 2019/11/1
居住地:
投稿: 4
Re: [EC-CUBE4]会員項目に選択項目を追加したいです
お世話になっております。
早速のご返答ありがとうございます!

引用:

FormAppendでchoicesを指定するか、src/Eccube/Form/Type/Admin/CustomerType.phpでEntryTypeと同様にaddしてやる必要があるかと思います(管理画面のフォームはEntryTypeではないので、FormAppendの内容が使用されていると思います)

ありがとうございます。FormAppendでchoicesを指定してみました。
勉強になります。


頂いた情報を元に下記ファイルを再度修正しました。


CustomerTrait.php 13行目から

trait CustomerTrait {
	/**
     * @ORM\Column(name="customer_type", type="string", length=255, nullable=true)
     * @Eccube\FormAppend(
     *  auto_render=true,
     *  type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType",
     *  options={
     *    "required": true,
     *    "label": "会員種類",
     *    "choices": {"一般会員": "normal","プレミアム会員": "premium",},
     *  }
     * )
     */
    private $customer_type;
    
    public function getcustomertype() {
        return $this->customer_type;
    }
    
    public function setcustomertype($customer_type) {
        $this->customer_type = $customer_type;

        return $this;
    }
    
    //(…中略)
}


EntryType.php 100行目辺り
(セレクトボックスにする為に、expandedを"false"に、style_classを"ec-select"に変更しました)

->add('customer_type', ChoiceType::class, [
                'required' => true,
                'expanded' => false,
                'multiple' => false,
                'label' => '会員種類',
                'choices'  => [
                    '一般会員'   => 'normal',
                    'プレミアム会員' => 'premium',
                ],
                'eccube_form_options' =>
                [
                    'auto_render' => true,
                    'form_theme' => null,
                    'style_class' => 'ec-select',
                ]
            ]);



そして、一度proxyファイルを削除してプラグインもアンインストール。
修正したファイルをアップロードして、再度プラグインをインストール・有効化したら、
管理画面、新規会員登録のページで項目が表示されるようになりました!

新規登録、管理画面から既存会員の項目を変更しても問題なく動作しているので、
これで解決済とさせて頂きます。

大変助かりました!
今後ともどうぞ宜しくお願い致します。

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


 



ログイン


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

統計情報

総メンバー数は88,624名です
総投稿数は109,865件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2311
5
umebius
2085
6
yuh
1819
7
h_tanaka
1632
8
red
1569
9
mcontact
1259
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.