質問 > フロント機能 > 会員登録画面に項目を追加したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ronko |
投稿日時: 2024/3/10 11:28
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
会員登録画面に項目を追加したい ▼テンプレート
[EC-CUBE] 4.0.6-p1 更新 [レンタルサーバ] XServer [PHP] 7.2.34 [データベース] MySQL 5.7.30 [WEBサーバ] Apache [ブラウザ]Chrome 122.0.6261.112 [現象] 今回、お客様から、会員登録画面の項目を分けたいという要望があり、会員登録画面に「company_name2」という項目を新たに追加しようとし、プラグインを使わずに行おうとしました。以下の手順で行ったのですが、登録画面を表示しようとした際「システムエラー」が表示されうまくいきませんでした。 1. 「CustomerTrait.php」を以下の内容で作成 <?php namespace Customize\Entity; use Eccube\Annotation\EntityExtension; use Doctrine\ORM\Mapping as ORM; /** * @EntityExtension("Eccube\Entity\Customer") */ trait CustomerTrait { /** * @var string|null * * @ORM\Column(name="company_name2", type="string", length=255, nullable=true) */ private $company_name2; /** * Set companyName2. * * @param string|null $companyName2 * * @return Customer */ public function setCompanyName($companyName2 = null) { $this->company_name2 = $companyName2; return $this; } /** * Get companyName2. * * @return string|null */ public function getCompanyName2() { return $this->company_name2; } } 2. 「app\Customize\Entity\」に保存 3. 「EntryTypeExtension.php」を以下の内容で作成 <?php namespace Customize\Form\Extension\Front; use Eccube\Form\Type\Front\EntryType; use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints as Assert; class EntryTypeExtension extends AbstractTypeExtension { public function getExtendedType()#拡張させたいType名 { return EntryType::class; } public function buildForm(FormBuilderInterface $builder, array $options) { ->add('company_name2', TextType::class, [ 'required' => false, 'constraints' => [ new Assert\Length([ 'max' => $this->eccubeConfig['eccube_stext_len'], ]), ], ]); } } 4. 「app\Customize\Form\Extension\」に保存 5. XServerのデータベース管理画面(phpAdmin)に入り、dtbCustomerに項目を追加 6.会員登録フォーム(index.twig)に以下を追加 <dl> <dt> {{ form_label(form.company_name2, '会社名', { 'label_attr': { 'class': 'ec-label' }}) }} </dt> <dd> <div class="ec-halfInput{{ has_errors(form.company_name2) ? ' error' }}"> {{ form_widget(form.company_name2) }} {{ form_errors(form.company_name2) }} </div> </dd> </dl> 7. XServerのターミナルにて以下を実行 php bin/console cache:clear --no-warmup php bin/console eccube:generate:proxies その結果、顧客登録画面にアクセスしたところ「システムエラー」が発生し、登録画面の表示がうまくいきませんでした。 原因についておわかりの方ご教授いただけないでしょうか。 よろしくお願いします。 |
k.nakayama |
投稿日時: 2024/3/10 12:01
対応状況: −−−
|
常連 登録日: 2019/10/11 居住地: 投稿: 69 |
Re: 会員登録画面に項目を追加したい ざっと見たところ、FormExtensionでeccubeConfigを使用されていますが、eccubeConfigが使えるようになっていないですね。
eccubeConfigを使用するをやめるか、eccubeConfigを使用している他のクラスと見比べて追加してみてください。こんな感じだと思いますが。
|
ronko |
投稿日時: 2024/3/10 13:53
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
Re: 会員登録画面に項目を追加したい 早速、アドバイスいただき、本当にありがとうございました。
無事、会員登録画面には項目が追加されるようになりました。 会員管理画面の会員登録画面にも、同じように項目を追加したいと思うのですが、こちらは、どのtwigになりますでしょうか? よろしくお願いします。 |
mcontact |
投稿日時: 2024/3/10 15:17
対応状況: −−−
|
神 登録日: 2022/1/22 居住地: 投稿: 1536 |
Re: 会員登録画面に項目を追加したい 管理画面であれば、下記のファイルになります。
https://github.com/EC-CUBE/ec-cube/blob/4.3/src/Eccube/Resource/template/admin/Customer/edit.twig そして、ファイル名が解らないのであればデバッグモードのsymfonyツールで調べられます。 https://doc4.ec-cube.net/debug_mode
|
ronko |
投稿日時: 2024/3/10 19:27
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
Re: 会員登録画面に項目を追加したい 会員登録画面新しい項目を追加後、会員登録を試みました。
会員登録画面には、管理側でもフロント側でも表示されるのですが、登録画面に情報を入力し、「同意する」をクリックした際、 システムエラーが起きてしまいます。どこか他に新しい項目追加が必要な箇所があるのでしょうか。 私の方で作業した内容は以下になります。 1. src/Eccube/Resource/template/admin/Customer/edit.twigに追加した項目を追加 <div class="row mb-2"> <div class="col-3"> <span>{{ '会社名・部署2'|trans }}</span> </div> <div class="col"> {{ form_widget(form.company_name2) }} {{ form_errors(form.company_name2) }} </div> </div> 2.src/Eccube/Resource/template/admin/Customer/delivery_edit.twigに追加した項目を追加 <div class="row mb-2"> <div class="col-3 mb-2"> {{ 'admin.common.company_name2'|trans }} </div> <div class="col mb-2"> {{ form_widget(form.company_name2) }} {{ form_errors(form.company_name2) }} </div> </div> 3.src/Eccube/Resource/template/default/Entry/index.twigに追加した項目を追加。 <dl> <dt> {{ form_label(form.company_name2, '会社・部門2', { 'label_attr': { 'class': 'ec-label' }}) }} </dt> <dd> <div class="ec-halfInput{{ has_errors(form.company_name2) ? ' error' }}"> {{ form_widget(form.company_name2) }} {{ form_errors(form.company_name2) }} </div> </dd> </dl> 4.src/Eccube/Resource/template/default/Entry/confirm.twigに追加した項目を追加。 <dl> <dt> {{ form_label(form.company_name2, '会社・部門2', { 'label_attr': { 'class': 'ec-label'}}) }} </dt> <dd> {{ form.company_name2.vars.data }} {{ form_widget(form.company_name2, { type : 'hidden' }) }} </dd> </dl> |
mcontact |
投稿日時: 2024/3/10 20:19
対応状況: −−−
|
神 登録日: 2022/1/22 居住地: 投稿: 1536 |
Re: 会員登録画面に項目を追加したい フロント側と同じように管理側の会員登録FromTypeのカスタマイズは行いました?
|
ronko |
投稿日時: 2024/3/10 20:38
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
Re: 会員登録画面に項目を追加したい 下記のファイルに新しい項目が追加されているのは確認したのですが、そのことでしょうか?
・src/Eccube/Form/Type/Admin/CustomerType.php ・src/Eccube/Form/Type/Front/EntryType.php 下記のようなエラーが出たので、 「Could not determine access type for property "company_name2" in class "Eccube\Entity\Customer"」 ・src/Eccube/Entity/Customer.phpに新しい項目を追加しましたが まだ、同じエラーが出ます。 |
k.nakayama |
投稿日時: 2024/3/10 22:53
対応状況: −−−
|
常連 登録日: 2019/10/11 居住地: 投稿: 69 |
Re: 会員登録画面に項目を追加したい 原因これだけか分かりませんがTraitで
public function setCompanyName($companyName2 = null) となっているのは public function setCompanyName2($companyName2 = null) へ修正が必要です。
|
ronko |
投稿日時: 2024/3/10 23:47
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
Re: 会員登録画面に項目を追加したい 本当にありがとうございました。
無事、登録は出来るようになりました。 恐れ入ります、追加でご質問させていただいてよろしいでしょうか。 管理画面で、会員一覧から会員を選択し、編集画面を出そうとしたところデバッグモードで以下のエラーがでてしまいました。 「Key "img" for array with keys "name, icon, children" does not exist.」 in /home/chocolabo/chocolabo-group.com/public_html/shop_test/app/template/admin/nav.twig (line 27) {% if level1.children is defined and level1.children|length > 0 %} <a class="c-mainNavArea__navItemTitle{{ active_menus(menus)[0] != key1 ? ' collapsed' }}" data-toggle="collapse" href="#nav-{{ key1 }}" aria-expanded="{{ active_menus(menus)[0] == key1 ? 'true' : 'false' }}" aria-controls="nav-{{ key1 }}"> <img src="{{ level1.img }}" class="nav-icon"> <span>{{ level1.name|trans }}</span> </a> <ul class="collapse {% if active_menus(menus)[0] == key1 %} show{% endif %}" id="nav-{{ key1 }}"> {% for key2, level2 in level1.children %} <li> どなたかおわかりの方ご教授いただけないでしょうか。 よろしくお願いします。 |
ronko |
投稿日時: 2024/3/10 23:49
対応状況: −−−
|
新米 登録日: 2024/3/9 居住地: 投稿: 7 |
Re: 会員登録画面に項目を追加したい 本当にありがとうございました。
無事、登録は出来るようになりました。 恐れ入ります、追加でご質問させていただいてよろしいでしょうか。 管理画面で、会員一覧から会員を選択し、編集画面を出そうとしたところデバッグモードで以下のエラーがでてしまいました。 「Key "img" for array with keys "name, icon, children" does not exist.」 in /home/chocolabo/chocolabo-group.com/public_html/shop_test/app/template/admin/nav.twig (line 27) {% if level1.children is defined and level1.children|length > 0 %} <a class="c-mainNavArea__navItemTitle{{ active_menus(menus)[0] != key1 ? ' collapsed' }}" data-toggle="collapse" href="#nav-{{ key1 }}" aria-expanded="{{ active_menus(menus)[0] == key1 ? 'true' : 'false' }}" aria-controls="nav-{{ key1 }}"> <img src="{{ level1.img }}" class="nav-icon"> <span>{{ level1.name|trans }}</span> </a> <ul class="collapse {% if active_menus(menus)[0] == key1 %} show{% endif %}" id="nav-{{ key1 }}"> {% for key2, level2 in level1.children %} <li> どなたかおわかりの方ご教授いただけないでしょうか。 よろしくお願いします。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |