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);
}
}
注意事項
既存の処理を変更することになるので、プラグイン等に影響がでる可能性があります。
使用する際は影響範囲を見極めて活用してください。