投稿日:2023.8.10
更新日:2023.10.11
ECCubeを/shopにインストールした場合です。
新規会員登録情報に電話番号(緊急連絡先)の項目を追加するサンプル例になります。
CustomerTraitの作成
/shop/app/Customize/Entity
の直下に、
EntityCustomerTrait.php
を作成します。
以下のような内容にしてください。
<?php namespace Customize\Entity; use Doctrine\ORM\Mapping as ORM; use Eccube\Annotation\EntityExtension; use Symfony\Component\Validator\Constraints as Assert; /** * @EntityExtension("Eccube\Entity\Customer") */ trait EntityCustomerTrait { /** * @var string|null * @ORM\Column(type="string", length=14, nullable=true) * @Eccube\Annotation\FormAppend( * auto_render=false, * type="\Symfony\Component\Form\Extension\Core\Type\TextType", * options={ * "required": true, * "label": "電話番号(緊急連絡先)", * "attr": {"placeholder": "例:09000000000"} * }) * @Assert\NotBlank(message="入力されていません。") */ private $mobile_number; /** * @return string|null */ public function getMobileNumber() { return $this->mobile_number; } /** * @param string|null $mobile_number * @return CustomerTrait */ public function setMobileNumber($mobile_number) { $this->mobile_number = $mobile_number; return $this; } }
FTPでアップロードします。
SSHでデータベースに追加
/shop/bin/console
のパーミッションを705に設定。
FTPソフトでパーミッションの変更が可能です。
SSHでログインします。
SSHはSSH用クライアントソフト「Poderosa」を使うと便利です。
/shop(ECCubeをインストールした場所)に移動します。
cd /home/xxx/www/shop
/home/xxx/www/shopは例です。
/shopで以下のコマンドを実行します。
bin/console eccube:generate:proxies
/shop/app/proxy/entity/src/Eccube/Entity/Customer.php
が生成される。
一度キャッシュクリア
bin/console cache:clear --no-warmup
コマンド
bin/console eccube:schema:update --force --dump-sql
→データベースにテーブルが追加される
テンプレートの追加
/shop/src/Eccube/Resource/template/default/Entry/index.twig
をコピーし、
/shop/app/template/default/Entry/index.twig
にペーストします。
入れたい場所に項目を追加編集します。
<dl> <dt> {{ form_label(form.mobile_number, '電話番号(緊急連絡先)', { 'label_attr': { 'class': 'ec-label' }}) }} </dt> <dd> <div class="ec-telInput{{ has_errors(form.mobile_number) ? ' error' }}"> {{ form_widget(form.mobile_number) }} {{ form_errors(form.mobile_number) }} </div> </dd> </dl>
他のテンプレートも同様に追加します。
/shop/app/template/default/Entry/confirm.twig
/shop/app/template/default/Mypage/change.twig
FTPでアップロードし、キャッシュをクリアします。
新規会員登録のページで確認してみてください。
数字(フラグ)の場合は、以下のような感じ。
データベースはintタイプ、初期値は0
/** * @var integer|null * @ORM\Column(type="integer", nullable=false, options={"default" = 0}) * @Eccube\Annotation\FormAppend( * auto_render=false, * type="\Symfony\Component\Form\Extension\Core\Type\IntegerType", * options={ * "required": false, * "label": "会員フラグ", * }) */ private $is_entry; /** * @return integer|null */ public function getIsEntry() { return $this->is_entry; } /** * @param integer|null $is_entry * @return CustomerTrait */ public function setIsEntry($is_entry) { $this->is_entry = $is_entry; return $this; }
選択の場合は、以下のような感じ。
/** * @var string|null * @ORM\Column(type="string", length=255, nullable=false) * @Eccube\Annotation\FormAppend( * auto_render=false, * type="\Symfony\Component\Form\Extension\Core\Type\ChoiceType", * options={ * "label": "事業形態", * "choices": {"法人":"法人","個人事業主":"個人事業主"}, * "required": true, * "expanded": true, * "multiple": false, * "mapped": true, * }) * @Assert\NotBlank(message="選択されていません。") */ private $company_type; /** * @return string|null */ public function getCompanyType() { return $this->company_type; }