質問 > フロント機能 > 会員登録で項目を追加したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
masaru |
投稿日時: 2021/10/30 2:33
対応状況: −−−
|
半人前 登録日: 2009/7/7 居住地: 投稿: 18 |
会員登録で項目を追加したい ▼テンプレート
[EC-CUBE] 4.1.0 [レンタルサーバ] さくらのインターネット [OS] CentOS Linux release 7.9.2009 [PHP] Version 7.4.20 [データベース] MySQL 5.7.34 [WEBサーバ] Apache/2.4.6 [導入プラグインの有無] 無 [カスタマイズの有無] 有 会員登録で項目(部署)を追加したくて行き詰まっています。 src/Eccube/Form/Type/Admin/CustomerType.php に /** 部署名を追加する **/ ->add('department_name', TextType::class, [ 'required' => false, 'constraints' => [ new Assert\Length([ 'max' => $this->eccubeConfig['eccube_stext_len'], ]), ], ]) src/Eccube/Entity/Customer.php に /** * @var string|null * * @ORM\Column(name="department_name", type="string", length=255, nullable=true) */ private $department_name; /** 部署名 * Set departmentName. * * @param string|null $departmentName * * @return Customer */ public function setDepartmentName($departmentName = null) { $this->department_name = $departmentName; return $this; } /** * Get departmentName. * * @return string|null */ public function getDepartmentName() { return $this->department_name; } を追加し、 src/Eccube/Resource/template/admin/Customer/edit.twig に {# 部署名を追加する #} <div class="row mb-2"> <div class="col-3"> {# <span>{{ 'admin.common.department_name'|trans }}</span> \ #} <span>{{ '部署名'|trans }}</span> </div> <div class="col"> {{ form_widget(form.department_name) }} {{ form_errors(form.department_name) }} </div> </div> を追加。 データベースのdtb_order、dtb_shippingテーブルに ALTER TABLE dtb_order add department_name varchar(255) NULL; ALTER TABLE dtb_shipping add department_name varchar(255) NULL; でdepartment_nameを追加しました。 これで会員登録画面 customer/newに部署名[ ]が追加されましたが、実際に何か入れて登録ボタンを押すと An exception occurred while executing 'SELECT t0.id AS id_1, t0.name01 AS name01_2, t0.name02 AS name02_3, t0.kana01 AS kana01_4, t0.kana02 AS kana02_5, t0.company_name AS company_name_6, t0.department_name AS department_name_7, t0.postal_code AS postal_code_8, t0.addr01 AS addr01_9, t0.addr02 AS addr02_10, t0.email AS email_11, t0.phone_number AS phone_number_12, t0.birth AS birth_13, t0.password AS password_14, t0.salt AS salt_15, t0.secret_key AS secret_key_16, t0.first_buy_date AS first_buy_date_17, t0.last_buy_date AS last_buy_date_18, t0.buy_times AS buy_times_19, t0.buy_total AS buy_total_20, t0.note AS note_21, t0.reset_key AS reset_key_22, t0.reset_expire AS reset_expire_23, t0.point AS point_24, t0.create_date AS create_date_25, t0.update_date AS update_date_26, t0.customer_status_id AS customer_status_id_27, t0.sex_id AS sex_id_28, t0.job_id AS job_id_29, t0.country_id AS country_id_30, t0.pref_id AS pref_id_31, t0.discriminator_type FROM dtb_customer t0 WHERE t0.email = ? AND t0.customer_status_id IN (?, ?) AND t0.discriminator_type IN ('customer')' with params ["masaru@erde.co.jp", 1, 2]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.department_name' in 'field list' と出てしまいます。 SQL文でdepartment_nameに関する記述が無いのが原因だと思いますが、これがどのファイルを修正すればいいのか見当が付きません。 |
ec9iii |
投稿日時: 2021/10/30 10:45
対応状況: −−−
|
一人前 登録日: 2014/9/8 居住地: 投稿: 117 |
Re: 会員登録で項目を追加したい Entity追加後、コマンドからProxyクラスの生成~定義をデータベースに反映する手順は行われておりますでしょうか?
(以下のドキュメントが参考になるかと思います) https://doc4.ec-cube.net/customize_entity |
masaru |
投稿日時: 2021/10/30 18:47
対応状況: −−−
|
半人前 登録日: 2009/7/7 居住地: 投稿: 18 |
Re: 会員登録で項目を追加したい 御教示いただいたサイトの記事を参考に
OrderTrait.php <?php namespace Customize\Entity; use Doctrine\ORM\Mapping as ORM; use Eccube\Annotation\EntityExtension; /** * @EntityExtension("Eccube\Entity\Order") */ trait OrderTrait { /** * @ORM\Column(type="string", nullable=true) */ public $department_name; } というファイルを作成し、 ../../../bin/console eccube:generate:proxies を実行し、 ../../../bin/console cache:clear --no-warmup をやったら PHP Fatal error: Eccube\Entity\Order and Customize\Entity\OrderTrait define the same property ($department_name) in the composition of Eccube\Entity\Order. However, the definition differs and is considered incompatible. Class was composed in /var/www/html/eccube/app/proxy/entity/src/Eccube/Entity/Order.php on line 42 In Order.php line 42: Compile Error: Eccube\Entity\Order and Customize\Entity\OrderTrait define the same property ($department_name) in the composition of ccube\Entity\Order. However, the definition differs and is considered incompatible. Class was composed となってしまいました。 src/Eccube/Entity/Order.php に /** * @var string|null * * @ORM\Column(name="department_name", type="string", length=255, nullable=true) */ private $department_name; /** の記述があるのが重複しているということでしょうか。 |
ec9iii |
投稿日時: 2021/11/1 10:03
対応状況: −−−
|
一人前 登録日: 2014/9/8 居住地: 投稿: 117 |
Re: 会員登録で項目を追加したい そうですね。。重複していることが原因だと思われます。
SQLエラーの原因がコマンド実行していないことではないかなと思いましたので、 まずはもともとのsrcへのカスタマイズのみでコマンド実行してみるところからお試しいただくのが良さそうかな、と思います。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |