質問 > フロント機能 > 商品の価格計算ロジックを会員ごとに算出するように変更したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
shima01 |
投稿日時: 2020/4/23 15:41
対応状況: −−−
|
新米 登録日: 2020/3/4 居住地: 投稿: 6 |
商品の価格計算ロジックを会員ごとに算出するように変更したい [EC-CUBE] EC CUBE 4.0.3(カスタマイズ中)
[レンタルサーバ] ローカル開発環境 [OS] Windows10 [PHP] PHP 7.1.4 [データベース] postgresql 11.7 [WEBサーバ] ローカル開発環境 [ブラウザ] GoogleChrome [導入プラグインの有無] なし [カスタマイズの有無] あり [現象] 製品の価格計算ロジックを変更したいと考えております。 Twig上やAddCartType.php内でmin_price()等を経由して、Eccube\Entity\Product::_calc()内で、同一商品の各商品規格の取りまとめを行っていることまでは把握しております。 そこで、Productクラス内でTokenStorageInterfaceクラスや別個のRepositoryクラスを用いて、会員ごとに表示する商品価格が違って見えるような実装を行いたいと考えています。 ただ、具体的にProductクラス内でTokenStorageInterfaceクラス等を使用するにはどうすればいいか、という点で現在困っております。 商品価格算出の際には、コンストラクタを通らないため、コンストラクタを用いた依存性の注入ができないと考えています。 そこで、他にどのような方法があるかについて、何かご存じでしたら教えていただければ幸いです。 |
468 |
投稿日時: 2020/4/24 12:14
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の価格計算ロジックを会員ごとに算出するように変更したい 私も以前、会員ごとに販売価格を変更したいという案件に対応した際、
同じようなところで悩みましたが、 結局、Entityのメソッド内でログインユーザーの情報を利用して価格を判定するという事は実現できず、Entity外のロジックにて対応しました。 私が色々調べた限りでは、 そもそもフレームワークの設計思想として Entity自身に他のEntityやグローバルなデータとの連携が想定されているのでしょうか? あくまでEntityは単一完結する事が望まれており、求めている機能は実装できないようになっているのではないかと思いました。
|
shima01 |
投稿日時: 2020/4/24 16:44
対応状況: −−−
|
新米 登録日: 2020/3/4 居住地: 投稿: 6 |
Re: 商品の価格計算ロジックを会員ごとに算出するように変更したい 468様
お返事ありがとうございます。 私の方では、Entityクラスのメソッド内で、TokenStorageInterfaceを用いてログインユーザを割り出し、カスタマイズにより新規追加したテーブルを使用するRepositoryクラスのメソッドを用いて、ユーザの分類ごとに商品価格を取り出したいと考えておりました。 やはりおっしゃる通り、フレームワークの都合上、Entity上のメソッドで他のEnityやRepository等のクラスと連携することはできないのですね。 そうなると私の考えている上記の方法では、実際に実装することができなさそうですね。 ありがとうございます。 468様が同様に価格を判定するロジックを対応された際、Entity外のロジックで対応されたとのことですが、具体的にどのように実装を行われましたでしょうか? 差し支えなければ、教えていただけましたら幸いです。 |
468 |
投稿日時: 2020/4/27 10:25
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の価格計算ロジックを会員ごとに算出するように変更したい 私が対応した方法としては、Customerクラスより割引率を返すメソッドを追加して、
セッションから取り出したCustomerクラスの割引率と商品金額をtwig上とカート投入処理、商品購入フロー内で都度計算するようにしました。
|
shima01 |
投稿日時: 2020/4/27 10:35
対応状況: −−−
|
新米 登録日: 2020/3/4 居住地: 投稿: 6 |
Re: 商品の価格計算ロジックを会員ごとに算出するように変更したい なるほど、かしこまりました。
参考にさせていただきます。 ありがとうございます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |