バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
janjun
投稿日時: 2022/12/12 18:18
対応状況: −−−
新米
登録日: 2022/12/12
居住地:
投稿: 3
Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい
▼テンプレート
[EC-CUBE] EC-CUBE4.1.0
[PHP] バージョン 7.2.28
[データベース] PostgreSQL 9.6.19
[WEBサーバ] PHP 7.2.28 Development Server
[導入プラグインの有無] 有
[カスタマイズの有無] 有

[質問内容]
mtb_order_item_typeに新たなレコードを追加し、対象の明細区分IDが含まれる注文を行うと、受注編集の明細の並び順がバラバラに表示されるようになってしまいました。

ソースを確認したところ、Eccube\Service\PurchaseFlow\ItemCollectionのsort()に手を加える必要がありそうだというところまではわかりました。
(実際に手を加えて修正できることは確認しました。)

そこで、元のItemCollectionをextendsしたCustomize\Service\PurchaseFlow\ItemCollectionを作成し、services.yamlに以下の記述を追記したのですが、エラーが発生しました。

Customize\Service\PurchaseFlow\ItemCollection:
        public: true
        autowire: true
        decorates: Eccube\Service\PurchaseFlow\ItemCollection
        arguments:
            ['@Customize\Service\PurchaseFlow\ItemCollection.inner']


引用:
Cannot autowire service "Customize\Service\PurchaseFlow\ItemCollection.inner": argument "$Items" of method "Eccube\Service\PurchaseFlow\ItemCollection::__construct()" has no type-hint, you should configure its value explicitly.


参考にしたサイト:
https://symfony.com/doc/4.4/service_container/service_decoration.html
https://qiita.com/chihiro-adachi/items/b3bb70e6abbc0f824965

上記のservices.yamlの記述内容や拡張方法についてアドバイスをいただきたく思います。
どうぞよろしくお願いいたします。
yuh
投稿日時: 2022/12/13 11:22
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい
下記のソースでエラー解消できると思いますが試していないので正常に動作するかはわかりません

Customize\Service\PurchaseFlow\ItemCollection:
        public: true
        autowire: true
        decorates: Eccube\Service\PurchaseFlow\ItemCollection
        arguments:
          [ '\Doctrine\Common\Collections\Collection' ]


----------------


http://ec-lab.net/

janjun
投稿日時: 2022/12/14 12:54
対応状況: −−−
新米
登録日: 2022/12/12
居住地:
投稿: 3
Re: Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい
ご返信ありがとうございます!
ご提示いただいた記述によりエラーが解消されました。

ただ、services.yamlの設定の意図としてはEccube\Service\PurchaseFlow\ItemCollectionをCustomize\Service\PurchaseFlow\ItemCollectionに差し替えたかったのですが、期待した動作とはなりませんでした。

services.yamlによるデコレーターパターンは、以下のようにDIを使わずnewした場合は適用されないのでしょうか。


Eccube\Entity\OrderItem.php

/**
         * Sorted to getOrderItems()
         *
         * @return ItemCollection
         */
        public function getItems()
        {
            return (new ItemCollection($this->getOrderItems()))->sort();
        }

yuh
投稿日時: 2022/12/14 14:39
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい
new の場合は適用されないですね


----------------


http://ec-lab.net/

janjun
投稿日時: 2022/12/14 15:06
対応状況: −−−
新米
登録日: 2022/12/12
居住地:
投稿: 3
Re: Eccube\Service\PurchaseFlow\ItemCollectionを拡張したい
newの場合は適用されないんですね。

とりあえずEccube\Entity\OrderItemのItemCollectionを直接差し替える形で対応しようかと思います。

ご回答ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1294
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.