バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 会員情報に項目を2つ追加したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
2645dfd
投稿日時: 2025/5/14 18:58
対応状況: 解決済
常連
登録日: 2022/5/2
居住地:
投稿: 35
会員情報に項目を2つ追加したい
▼テンプレート
[EC-CUBE] EC-CUBE 4.2.1
[レンタルサーバ] エックスサーバー
[OS] Windows
[PHP] 8.1.29
[データベース] phpmyadmin(MySQL5.7)
[導入プラグインの有無]
おすすめ商品管理プラグイン 4.3.0 
関連商品プラグイン 4.3.0 
データ移行プラグイン 4.3.0 
PGマルチペイメントサービス決済プラグイン 1.0.6 
EC-CUBEペイメント決済プラグイン(4.2系)
[カスタマイズの有無] 無し
[現象]
会員登録情報に、性別のような必須ではないが登録できる項目を増やしたいと考えています。
新規会員登録画面には表示されず、マイページの会員情報変更ページで表示されればよいのですが、このようなことをしてもページにフォームが表示されません。
なにか足りない部分やおかしいところはありますでしょうか。よろしければご教授いただけますと幸いです。

◯データベースにテーブルを追加
dtb_customer テーブルに batting_style と average_score の2カラムを追加しています(どちらも VARCHAR, null許可)。

◯ファイル追加
app/Customize/Entity/CustomerTrait.php
namespace Customize\Entity;
use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;
use Symfony\Component\Validator\Constraints as Assert;
trait CustomerTrait
{
    /**
     * @var string|null
     * @ORM\Column(name="batting_style", type="string", length=255, nullable=true)
     * @EntityExtension\FormAppend(
     *     auto_render=false,
     *     type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType",
     *     options={
     *          "label": "右/左",
     *          "choices": {
     *              "右": "right",
     *              "左": "left"
     *          },
     *          "required": false,
     *          "expanded": true,
     *          "multiple": false,
     *          "mapped": true
     *     }
     * )
     */
    private $battingStyle;

    /**
     * @var string|null
     * @ORM\Column(name="average_score", type="string", length=255, nullable=true)
     * @EntityExtension\FormAppend(
     *     auto_render=false,
     *     type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType",
     *     options={
     *          "label": "平均スコア",
     *          "choices": {
     *              "A": "A",
     *              "B": "B",
     *              "C": "C",
     *              "D": "D",
     *              "E": "E"
     *          },
     *          "required": false,
     *          "expanded": true,
     *          "multiple": false,
     *          "mapped": true
     *     }
     * )
     */
    private $averageScore;

    public function getBattingStyle()
    {
        return $this->battingStyle;
    }

    public function setBattingStyle($battingStyle)
    {
        $this->battingStyle = $battingStyle;
        return $this;
    }

    public function getAverageScore()
    {
        return $this->averageScore;
    }

    public function setAverageScore($averageScore)
    {
        $this->averageScore = $averageScore;
        return $this;
    }
}


◯ファイル追加
app/Customize/Form/Extension/MypageChangeTypeExtension.php
namespace Customize\Form\Extension;

use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Eccube\Form\Type\Front\MypageChangeType;

class MypageChangeTypeExtension extends AbstractTypeExtension
{
    public static function getExtendedTypes(): iterable
    {
        return [MypageChangeType::class];
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('battingStyle', ChoiceType::class, [
                'label' => '右/左',
                'choices' => [
                    '右' => 'right',
                    '左' => 'left',
                ],
                'expanded' => true,
                'multiple' => false,
                'required' => false,
            ])
            ->add('averageScore', ChoiceType::class, [
                'label' => '平均スコア',
                'choices' => [
                    'A' => 'A',
                    'B' => 'B',
                    'C' => 'C',
                    'D' => 'D',
                    'E' => 'E',
                ],
                'required' => false,
            ]);
    }
}


◯src/Eccube/Entity/Customer.php 修正
if (!class_exists(...)) {} ブロックの削除

修正内容
namespace Eccube\Entity;
// 既存のコード...
use Customize\Entity\CustomerTrait; //  追加
/**
// 既存のコード...
 */
class Customer extends \Eccube\Entity\AbstractEntity implements UserInterface, \Serializable
{
    use CustomerTrait; // 追加
    // 既存のコード...
}


◯app/config/eccube/services.yaml
追加内容
services:
Customize\Form\Extension\MypageChangeTypeExtension:
tags:
- { name: form.type_extension, extended_type: Eccube\Form\Type\Front\MypageChangeType }

◯MYページ/会員登録内容変更(入力ページ)に追加
 app/template/default/Mypage/change.twig
{{ form_label(form.battingStyle) }}
{{ form_widget(form.battingStyle) }}
{{ form_errors(form.battingStyle) }}
mcontact
投稿日時: 2025/5/15 9:12
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1709
Re: 会員情報に項目を2つ追加したい
全体的にEC-CUBE(Symfony)を理解していないと思えるコードかと思います。
少なくとも、

◯src/Eccube/Entity/Customer.php 修正

→修正不要

◯app/config/eccube/services.yaml

→修正不要

です。

また、本コミュニティは開発者の相互にサポートするのための開発コミュニティです。コードレビューを行う場所ではありません。ご自身で改修したコードをもとに、調査・開発・確認を行ってください。それでも不明点が出るようであれば、エラーログなどを記載して質問して頂くか、開発に関して初心者ということでしたら、開発できるレベルまで勉強されるか、御社エンジニアまたはEC-CUBEインテグレートパートナーに相談されることをオススメ致します。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

h_tanaka
投稿日時: 2025/5/15 9:16
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 2007
Re: 会員情報に項目を2つ追加したい
CustomerTrait を重複して呼んでいたり、 FormAppend と FormTypeExtension が重複していたりと、いろいろとつっこみどころの多いコードですが。。
MypageChangeType は、独自追加したクラスでしょうか?
EC-CUBE標準であれば EntryType を拡張する必要があります。


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

2645dfd
投稿日時: 2025/5/15 11:24
対応状況: −−−
常連
登録日: 2022/5/2
居住地:
投稿: 35
Re: 会員情報に項目を2つ追加したい
ご迷惑をおかけしてしまい、申し訳ありません。
パートナー様に相談しつつ、どうしても限られたコストとリソースで進める必要があり、自分の手を動かしておりました。
開発者の方々の貴重な場を乱してしまったこと、重ねてお詫びいたします。
こちらの内容に関しましてこれ以上の質問は控えさせていただきます。ご返信ありがとうございました。
2645dfd
投稿日時: 2025/5/15 11:26
対応状況: −−−
常連
登録日: 2022/5/2
居住地:
投稿: 35
Re: 会員情報に項目を2つ追加したい
EC-CUBEの標準です。EntryTypeについてドキュメントを拝見しましたところ修正方法がイメージできましたのでまずそちらを試してみます。
MypageChangeType は、MypageChangeTypeExtension.phpファイルを追加しただけの状態ですので、こちらも不要そうですね。
こちらの内容で試してみます、ご返信ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は106,373名です
総投稿数は112,618件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2331
5
umebius
2085
6
h_tanaka
2007
7
yuh
1900
8
mcontact
1709
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.