バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
start
投稿日時: 2020/7/11 13:59
対応状況: 開発中
一人前
登録日: 2017/11/9
居住地:
投稿: 77
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
居住地: 東京日本橋
投稿: 1717
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-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

start
投稿日時: 2020/7/11 17:12
対応状況: −−−
一人前
登録日: 2017/11/9
居住地:
投稿: 77
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
居住地: 東京日本橋
投稿: 1717
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-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

start
投稿日時: 2020/7/11 20:26
対応状況: 開発中
一人前
登録日: 2017/11/9
居住地:
投稿: 77
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
居住地: 東京日本橋
投稿: 1717
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
居住地:
投稿: 77
Re: dtb_memberテーブルに項目追加
ご返事ありがとうございました。
丁寧に説明頂いで本当にありがとうございました。解説出来ました。
今後とも宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は65,865名です
総投稿数は98,028件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2591
4
nanasess
2101
5
umebius
1717
6
yuh
1612
7
red
1422
8
h_tanaka
1038
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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