LoginSignup
8
6

More than 1 year has passed since last update.

EC-CUBE4で、コアのクラスを触らずに上書きする

Posted at

EC-CUBEのコアのクラスの一部の挙動を変えたい、といったときの方法です。

Symfonyのdecoratesを使用することで、コアのソースコードを触らずにカスタマイズすることができます。

カスタマイズ方法

例えば、OrderPdfServiceのmakePdfの挙動を変えたい場合は、以下のようになります。

app/Customize/Resource/config/services.yamlを作成

app/Customize/Resource/config/services.yaml
services:
  Customize\Service\OrderPdfService:
    public: false
    autowire: true
    decorates: Eccube\Service\OrderPdfService

app/Customize/Service/OrderPdfService.phpを作成

app/Customize/Service/OrderPdfService.php
<?php

namespace Customize\Service;

class OrderPdfService extends \Eccube\Service\OrderPdfService
{
    public function makePdf(array $formData)
    {
        // ここで既存の処理を変更
        return parent::makePdf($formData);
    }
}

注意事項

既存の処理を変更することになるので、プラグイン等に影響がでる可能性があります。
使用する際は影響範囲を見極めて活用してください。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6