バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > [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
居住地: 東京日本橋
投稿: 1588
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-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー リモートで働くエンジニア募集中

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ペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は62,420名です
総投稿数は96,310件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2319
4
nanasess
2044
5
yuh
1612
6
umebius
1588
7
red
1403
8
h_tanaka
1010
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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