バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > Entity拡張による既存メソッドの書き換え方法

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gwkozaki
投稿日時: 2020/8/21 16:43
対応状況: −−−
常連
登録日: 2019/7/30
居住地: 日本
投稿: 53
Entity拡張による既存メソッドの書き換え方法
▼テンプレート
[EC-CUBE] 4.0.4
[導入プラグインの有無] あれば導入プラグインを記載
[カスタマイズの有無]
 Entityの拡張により、以下のテーブルにFax番号カラムを追加
 ・dtb_order
 ・dtb_shipping
 ・dtb_customer_address

◆質問内容
 現在上記のカスタマイズにより、それぞれのテーブルにカラムを追加いたしました。
 ですが処理を追っていく中で、Eccube\Entity\Shipping.phpとEccube\Entity\CustomerAddress.php内で、
 以下のようなメソッドを定義してあり、そちらへのset処理の追加が必要だとわかりました。
 ============================
 ●Shipping.php
  setFromCustomerAddress();
  clearCustomerAddress();
 ●CustomerAddress.php
  setFromCustomer();
  setFromShipping();
 ============================

そこで、下記のサイトを参考にして既存メソッドの書き換えを図ったのですが、ECCUBEのバージョンが異なるためうまく機能しませんでした。
https://qiita.com/izayoi256/items/cdd8074f7264b5d90f90

主な原因は、上記サイト内で出てくるapp/Customize/Service/EntityProxyService.php内、__construct周りの処理が異なっていることだと思います。
ですが、ECCUBE4.0.4系のsrc/Eccube/Service/EntityProxyService.phpを基に、__construct部分を以下のように書き換えても上手くいきません。
public function __construct(EntityManagerInterface $entityManager, ContainerInterface $container, BaseService $baseService)
    {
        parent::__construct($entityManager,$container);
        $this->baseService = $baseService;
    }


◆上記に書き換えた場合に出るエラー文
 
In CheckCircularReferencesPass.php line 67:
                                                                                                                            
  Circular reference detected for service "Customize\Service\EntityProxyService", path: "Customize\Service\EntityProxyServ  
  ice -> Customize\Service\EntityProxyService".


どなたか、もしEntity内の既存メソッドの置換方法をご存知の方がいらっしゃいましたら、どこが誤っているのかご教授いただきたいです。
お手数をおかけいたしますが、よろしくお願いいたします。
umebius
投稿日時: 2020/8/23 13:13
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: Entity拡張による既存メソッドの書き換え方法
app/config/eccube/services.yamlで
Serviceにdecorateしている部分で追加になっているargumentを渡せば動くのではないでしょうか?

Customize\Service\EntityProxyService:
decorates: Eccube\Service\EntityProxyService
arguments:
- '@doctrine.orm.default_entity_manager'
- '@service_container'
- '@Customize\Service\EntityProxyService.inner'


あと記事では記載されていませんがCustomize\Service\EntityProxyServiceで下記のuseも必要ですかね?

use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;


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

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

gwkozaki
投稿日時: 2020/8/24 9:24
対応状況: 解決済
常連
登録日: 2019/7/30
居住地: 日本
投稿: 53
Re: Entity拡張による既存メソッドの書き換え方法
umebius 様

ご協力いただき、ありがとうございます!
umebius 様にご教授いただいたようにargumentを渡したところ、
無事既存メソッドを書き換えることが出来ました!

今回の件でservice.yaml周りについての知識不足が分かったので、
その辺りについてもっと理解を深めて参ります。

この度は、本当に助かりました。
ご教授いただき、誠にありがとうございました!

今後ともどうぞ、よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
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.