バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > dtb_memberテーブルに項目追加

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
start
投稿日時: 2020/7/11 13:59
対応状況: 開発中
一人前
登録日: 2017/11/9
居住地:
投稿: 109
dtb_memberテーブルに項目追加
dtb_mebmerテーブルに項目追加する必要なので手動でDBに直接項目追加して、scr配下の対象Entity(Member), Form(MemberType.php), View(member_edit.twig)で対象項目を追加して試したら問題なしで動いています。今後バーションアップする為にsrc配下に直接修正ダメのでapp/Customizeの配下にEntity, Repository, Form, Viewを元のファイルをコピーして今回の追加する項目を追加して確認したら下記のエラーが発生して困っています。
Neither the property "Test" nor one of the methods "Test()", "getTest()"/"isTest()"/"hasTest()" or "__call()" exist and have public access in class

※src配下のファイルを全て元に戻しました。

▼テンプレート
[EC-CUBE] EC-CUBEのバージョン、新規インストールかアップデートか、等
[レンタルサーバ] レンタルサーバ名
[OS] 使用しているOS名、バージョン
[PHP] 使用しているPHPのバージョン
[データベース] 使用しているDB名、バージョン
[WEBサーバ] 使用しているWEBサーバ名、バージョン
[ブラウザ] 使用しているブラウザ名、バージョン
[導入プラグインの有無] あれば導入プラグインを記載
[カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に)
[現象] 再現手順や、どのような現象が発生しているかなど、具体的に
umebius
投稿日時: 2020/7/11 14:39
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: dtb_memberテーブルに項目追加
エラーメッセージのhave public access in classに続くのは「"Eccube\Entity\Member"」ですかね

Proxyである app/proxy/entity/src/Eccube/Entity/Member.php は存在していますでしょうか?

存在しなければドキュメントを参考にProxy クラスを生成してみてください。
https://doc4.ec-cube.net/customize_entity#entity%E6%8B%A1%E5%BC%B5-2267


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

start
投稿日時: 2020/7/11 17:12
対応状況: −−−
一人前
登録日: 2017/11/9
居住地:
投稿: 109
Re: dtb_memberテーブルに項目追加
お返事ありがとうございました。
proxyを生成しても同じでした。私の作業流れを軽く説明致します。
1. app/Customize/Entity/MemberTrait.php を作成
2. proxy 生成 bin/console eccube:generate:proxies
3. app/Customize/Repository/MemberRepository.php を元のファイルから作成して、namespaceを変更(namespace Customize\Repository;)またはuse Eccube\Repository\AbstractRepository;を追加した。
4. app/Customize/Form/Type/Admin/MemberType.phpを元のファイルから作成して、namespaceを変更、use Customize\Entity\Company;
use Customize\Repository\CompanyRepository;を追加して、
->add('company', EntityType::class, [
'class' => Company::class,
'required' => false,
]);
5. app/template/admin/Setting/System/member_edit.twig

{{ form_widget(form.company) }}
{{ form_errors(form.company) }}したら下記のエラー発生しています。エラー内容は最初のエラーと同じです。
エラー内容:Neither the property "company" nor one of the methods "company()", "getcompany()"/"iscompany()"/"hascompany()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView" in __string_template__96c42d43d963842ad6a198a59cb1e9bf9e16ea872a8add173a168f8d08aab775 at line 138.

※ MemberTrait.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\Member")
*/
trait MemberTrait
{
/**
* @var \Customize\Entity\Company
*
* @ORM\ManyToOne(targetEntity="Customize\Entity\Company")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="company_id", referencedColumnName="id")
* })
*/
private $Company;

/**
* Set company.
*
* @param \Customize\Entity\Company|null $company
*
* @return Member
*/
public function setCompany(\Customize\Entity\Company $company = null)
{
$this->Company = $company;

return $this;
}

/**
* Get company.
*
* @return \Customize\Entity\Company|null
*/
public function getCompany()
{

return $this->Company;
}
}
です。
umebius
投稿日時: 2020/7/11 17:18
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: dtb_memberテーブルに項目追加
引用:
Neither the property "company" nor one of the methods "company()", "getcompany()"/"iscompany()"/"hascompany()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView"


なるほど、このエラー内容であれば確かにproxyの問題ではないですね。

問題はformにcompanyというプロパティが存在しないことです。

拝見したところ、Controllerについては修正されていないようですので、
formオブジェクトがapp/Customize/Form/Type/Admin/MemberType.phpのクラスではなく
src/Eccube/Form/Type/Admin/MemberType.phpが使用されているのではないでしょうか?

対応は下記のどちらかですがこのケースであれば通常は1が簡単と思います。

1. FormExtensionでMemberTypeを拡張する
https://doc4.ec-cube.net/customize_formtype

2. ControllerもCustomizeにコピーして
フォームのクラスをapp/Customize/Form/Type/Admin/MemberType.phpに変更する


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

start
投稿日時: 2020/7/11 20:26
対応状況: 開発中
一人前
登録日: 2017/11/9
居住地:
投稿: 109
Re: dtb_memberテーブルに項目追加
お返事ありがとうございました。
app/Customizeの配下にあるMemberType.php, MemberRepository.phpを削除しました。
MemberTrait.phpはそのままです。
教えて頂いてようapp/Customize/Form/Extension/MemberTypeExtension.phpファイルを作成しました。中身は:
<?php

namespace Customize\Form\Extension;

use Eccube\Form\Type\Admin\MemberType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Validator\Constraints\NotBlank;
use Customize\Entity\Company;

class MemberTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$options = $builder->get('Company')->getOptions();

$options['required'] = true;
$options['constraints'] = [ new NotBlank() ];
$options['attr']['placeholder'] = '会社名';

$builder->add('Company', Company::class, $options);
}

/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return MemberType::class;
}
}
ですがエラーが発生しています。エラー内容は:
The child with the name "Company" does not exist.です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ここに発生しています。$options = $builder->get('Company')->getOptions();
umebius
投稿日時: 2020/7/11 23:43
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: dtb_memberテーブルに項目追加
Extensionの最初ではまだCompanyは追加されていないので、エラーになりますね。
下記だけで良いのでは?


$builder->add('Company', Company::class, [
'required' => true,
'constraints' => [
new NotBlank(),
],
'attr' => [
....
}
]);
start
投稿日時: 2020/7/12 11:32
対応状況: 解決済
一人前
登録日: 2017/11/9
居住地:
投稿: 109
Re: dtb_memberテーブルに項目追加
ご返事ありがとうございました。
丁寧に説明頂いで本当にありがとうございました。解説出来ました。
今後とも宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,281名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.