Open nobuhiko opened 6 years ago
コミュニティページでshiro8さんがご指摘いただいている以下が原因のようです。
https://github.com/EC-CUBE/ec-cube/blob/master/src/Eccube/Application.php#L800
if (strpos($route, 'admin') === 0) {
// 管理画面
$app['eccube.event.dispatcher']->dispatch('eccube.event.admin.response', $event);
} else {
// フロント画面
$app['eccube.event.dispatcher']->dispatch('eccube.event.front.response', $event);
}
こちらでは、ルーティング名が admin
から始まっているかどうかで実行されるイベントがフロント画面か管理画面かを判定しています。
プラグインでは例えば plugin_admin_order_pdf
等のように admin
以外の文字から始まるルーティング名を設定することがきますので、この場合にフロント画面に設定されているイベントが実行されてしまいます。
フロント画面か管理画面かの判定はルーティング名ではなく、実際にアクセスされたURLが管理画面のものかどうかで判定するように修正をする必要があるかとおもいます。
例)
if ($app->isAdminRequest()) { ...
(修正箇所は6箇所)
概要(Overview)
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=20377&forum=9&post_id=86772#forumpost86772
期待する内容(Expect) or 要望 (Requirement)
eccube.event.front.response はフロントの画面にのみ作用する
再現手順(Procedure)
eccube.event.front.responseを使っているプラグインがある状態で、帳票出力プラグインを使って帳票を出力するとエラーが出る
環境 (environment)