投稿日: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;
}