バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 会員登録画面に項目を追加したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地:
投稿: 52
Re: 会員登録画面に項目を追加したい
ざっと見たところ、FormExtensionでeccubeConfigを使用されていますが、eccubeConfigが使えるようになっていないですね。

eccubeConfigを使用するをやめるか、eccubeConfigを使用している他のクラスと見比べて追加してみてください。こんな感じだと思いますが。

    /**
     * @var \Eccube\Common\EccubeConfig
     */
    private $eccubeConfig;

    public function __construct(\Eccube\Common\EccubeConfig $eccubeConfig)
    {
        $this->eccubeConfig = $eccubeConfig;
    }


----------------
----------------
開発公式インテグレートパートナー U-Mebius

ronko
投稿日時: 2024/3/10 13:53
対応状況: −−−
新米
登録日: 2024/3/9
居住地:
投稿: 7
Re: 会員登録画面に項目を追加したい
早速、アドバイスいただき、本当にありがとうございました。
無事、会員登録画面には項目が追加されるようになりました。

会員管理画面の会員登録画面にも、同じように項目を追加したいと思うのですが、こちらは、どのtwigになりますでしょうか?

よろしくお願いします。
mcontact
投稿日時: 2024/3/10 15:17
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1295
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


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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
居住地:
投稿: 1295
Re: 会員登録画面に項目を追加したい
フロント側と同じように管理側の会員登録FromTypeのカスタマイズは行いました?


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

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
居住地:
投稿: 52
Re: 会員登録画面に項目を追加したい
原因これだけか分かりませんがTraitで
public function setCompanyName($companyName2 = null)
となっているのは
public function setCompanyName2($companyName2 = null)
へ修正が必要です。


----------------
----------------
開発公式インテグレートパートナー U-Mebius

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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,873名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.