Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

プラグインのフックポイントの挙動がおかしい #10

Open
nobuhiko opened this issue May 18, 2018 · 1 comment
Open

プラグインのフックポイントの挙動がおかしい #10

nobuhiko opened this issue May 18, 2018 · 1 comment
Labels
Milestone

Comments

@nobuhiko
Copy link
Contributor

概要(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)

  • EC-CUBE: 3.0.16
@okazy
Copy link
Contributor

okazy commented May 18, 2018

コミュニティページで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箇所)

@nanasess nanasess transferred this issue from EC-CUBE/ec-cube Nov 11, 2019
@nanasess nanasess added the bug label Nov 11, 2019
@nanasess nanasess added this to the 3.1.0 milestone Nov 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants