バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 会員情報に項目を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) }}
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 会員情報に項目を2つ追加したい 2645dfd 2025/5/14 18:58
     Re: 会員情報に項目を2つ追加したい mcontact 2025/5/15 9:12
       Re: 会員情報に項目を2つ追加したい 2645dfd 2025/5/15 11:24
     Re: 会員情報に項目を2つ追加したい h_tanaka 2025/5/15 9:16
       Re: 会員情報に項目を2つ追加したい 2645dfd 2025/5/15 11:26

 



ログイン


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

統計情報

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

投稿数ランキング

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