Magento 2 : Use plugin / interceptor on abstract classMagento 2: Plugin before/around/after InteractionMagento 2 Plugin - ProductRepository getList overrideM2 Shipping Configuration class “interceptable” via around before or after mechanismMagento2: plugin around method not workingMagento 2 checkout Plugin, how to?Plugin for backend order create that sets attribute value on created orderCannot call abstract execute Magento 2Magento 2.1.3 Plugin problemRemove plugin (interceptor)Magento2 plugin/interceptor not working
Does the sign matter for proportionality?
Pass By Reference VS Pass by Value
Why was the Spitfire's elliptical wing almost uncopied by other aircraft of World War 2?
Why do games have consumables?
Packing rectangles: Does rotation ever help?
Are Boeing 737-800’s grounded?
What do the phrase "Reeyan's seacrest" and the word "fraggle" mean in a sketch?
Sci-fi book: portals appear in London and send a failed artist towards a designated path where he operate a giant superweapon
What language was spoken in East Asia before Proto-Turkic?
Do I have an "anti-research" personality?
How to pronounce 'C++' in Spanish
How would one muzzle a full grown polar bear in the 13th century?
Was there a Viking Exchange as well as a Columbian one?
How do I use proper grammar in the negation of "have not" for the following sentence translation?
How to type a section sign (§) into the Minecraft client
Who is the Umpire in this picture?
How do I deal with a coworker that keeps asking to make small superficial changes to a report, and it is seriously triggering my anxiety?
Combinable filters
Don’t seats that recline flat defeat the purpose of having seatbelts?
How can Republicans who favour free markets, consistently express anger when they don't like the outcome of that choice?
Why don't other Westeros houses use wildfire?
How much cash can I safely carry into the USA and avoid civil forfeiture?
How can I change the color of a part of a line?
What is the difference between `command a[bc]d` and `command `ab,cd`
Magento 2 : Use plugin / interceptor on abstract class
Magento 2: Plugin before/around/after InteractionMagento 2 Plugin - ProductRepository getList overrideM2 Shipping Configuration class “interceptable” via around before or after mechanismMagento2: plugin around method not workingMagento 2 checkout Plugin, how to?Plugin for backend order create that sets attribute value on created orderCannot call abstract execute Magento 2Magento 2.1.3 Plugin problemRemove plugin (interceptor)Magento2 plugin/interceptor not working
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am trying to create a plugin that fires after MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction::execute
.
So I have my plugin setup in di.xml
and an afterExecute()
method, but it doesn't seem to get fired.
Now I know there are some limitations for plugins, but I can't read anything about abstract classes.
Can plugins / interceptors be used on abstract classes?
magento2 plugin interceptor
bumped to the homepage by Community♦ 27 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
I am trying to create a plugin that fires after MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction::execute
.
So I have my plugin setup in di.xml
and an afterExecute()
method, but it doesn't seem to get fired.
Now I know there are some limitations for plugins, but I can't read anything about abstract classes.
Can plugins / interceptors be used on abstract classes?
magento2 plugin interceptor
bumped to the homepage by Community♦ 27 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
I am trying to create a plugin that fires after MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction::execute
.
So I have my plugin setup in di.xml
and an afterExecute()
method, but it doesn't seem to get fired.
Now I know there are some limitations for plugins, but I can't read anything about abstract classes.
Can plugins / interceptors be used on abstract classes?
magento2 plugin interceptor
I am trying to create a plugin that fires after MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction::execute
.
So I have my plugin setup in di.xml
and an afterExecute()
method, but it doesn't seem to get fired.
Now I know there are some limitations for plugins, but I can't read anything about abstract classes.
Can plugins / interceptors be used on abstract classes?
magento2 plugin interceptor
magento2 plugin interceptor
edited Nov 8 '16 at 14:46
Marius♦
168k28324694
168k28324694
asked Nov 8 '16 at 14:34
Giel BerkersGiel Berkers
7,20924383
7,20924383
bumped to the homepage by Community♦ 27 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ 27 mins ago
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Not 100% sure about this, but I think the plugins work for classes that get instantiated.
The object manager instantiates the myclassInterceptor
instead of myclass
when there are plugins for that class.
Since the abstract classes never get instantiated you won't have an Interceptor
class generated that should call the plugins.
But...
I assume there is a class that extends MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction
and that one is actually instantiated and used.
You can try to create the plugin for that class.
Even if that class does not contain the execute
method, it is still available (via parent class) so this means you should be able to add a plugin to it.
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon asmagento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method$result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring myLISTENER_AFTER
.
– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try anaround
plugin and call the original method inside your plugin.
– Marius♦
Nov 8 '16 at 16:05
Already triedaround
. Before thecallable
the code gets executed, but as soon as I place it after thecallable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it onbefore
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.
– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out thatMagentoFrameworkAppResponseHttpFileFactory::create()
is checking if$content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing anexit(0)
, practically making it impossible for plugins to hook intoafter
for this method. I think I'm going to report this as an issue...
– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "479"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f144745%2fmagento-2-use-plugin-interceptor-on-abstract-class%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Not 100% sure about this, but I think the plugins work for classes that get instantiated.
The object manager instantiates the myclassInterceptor
instead of myclass
when there are plugins for that class.
Since the abstract classes never get instantiated you won't have an Interceptor
class generated that should call the plugins.
But...
I assume there is a class that extends MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction
and that one is actually instantiated and used.
You can try to create the plugin for that class.
Even if that class does not contain the execute
method, it is still available (via parent class) so this means you should be able to add a plugin to it.
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon asmagento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method$result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring myLISTENER_AFTER
.
– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try anaround
plugin and call the original method inside your plugin.
– Marius♦
Nov 8 '16 at 16:05
Already triedaround
. Before thecallable
the code gets executed, but as soon as I place it after thecallable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it onbefore
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.
– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out thatMagentoFrameworkAppResponseHttpFileFactory::create()
is checking if$content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing anexit(0)
, practically making it impossible for plugins to hook intoafter
for this method. I think I'm going to report this as an issue...
– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
add a comment |
Not 100% sure about this, but I think the plugins work for classes that get instantiated.
The object manager instantiates the myclassInterceptor
instead of myclass
when there are plugins for that class.
Since the abstract classes never get instantiated you won't have an Interceptor
class generated that should call the plugins.
But...
I assume there is a class that extends MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction
and that one is actually instantiated and used.
You can try to create the plugin for that class.
Even if that class does not contain the execute
method, it is still available (via parent class) so this means you should be able to add a plugin to it.
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon asmagento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method$result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring myLISTENER_AFTER
.
– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try anaround
plugin and call the original method inside your plugin.
– Marius♦
Nov 8 '16 at 16:05
Already triedaround
. Before thecallable
the code gets executed, but as soon as I place it after thecallable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it onbefore
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.
– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out thatMagentoFrameworkAppResponseHttpFileFactory::create()
is checking if$content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing anexit(0)
, practically making it impossible for plugins to hook intoafter
for this method. I think I'm going to report this as an issue...
– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
add a comment |
Not 100% sure about this, but I think the plugins work for classes that get instantiated.
The object manager instantiates the myclassInterceptor
instead of myclass
when there are plugins for that class.
Since the abstract classes never get instantiated you won't have an Interceptor
class generated that should call the plugins.
But...
I assume there is a class that extends MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction
and that one is actually instantiated and used.
You can try to create the plugin for that class.
Even if that class does not contain the execute
method, it is still available (via parent class) so this means you should be able to add a plugin to it.
Not 100% sure about this, but I think the plugins work for classes that get instantiated.
The object manager instantiates the myclassInterceptor
instead of myclass
when there are plugins for that class.
Since the abstract classes never get instantiated you won't have an Interceptor
class generated that should call the plugins.
But...
I assume there is a class that extends MagentoSalesControllerAdminhtmlShipmentAbstractShipmentPrintAction
and that one is actually instantiated and used.
You can try to create the plugin for that class.
Even if that class does not contain the execute
method, it is still available (via parent class) so this means you should be able to add a plugin to it.
answered Nov 8 '16 at 14:45
Marius♦Marius
168k28324694
168k28324694
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon asmagento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method$result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring myLISTENER_AFTER
.
– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try anaround
plugin and call the original method inside your plugin.
– Marius♦
Nov 8 '16 at 16:05
Already triedaround
. Before thecallable
the code gets executed, but as soon as I place it after thecallable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it onbefore
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.
– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out thatMagentoFrameworkAppResponseHttpFileFactory::create()
is checking if$content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing anexit(0)
, practically making it impossible for plugins to hook intoafter
for this method. I think I'm going to report this as an issue...
– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
add a comment |
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon asmagento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method$result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring myLISTENER_AFTER
.
– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try anaround
plugin and call the original method inside your plugin.
– Marius♦
Nov 8 '16 at 16:05
Already triedaround
. Before thecallable
the code gets executed, but as soon as I place it after thecallable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it onbefore
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.
– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out thatMagentoFrameworkAppResponseHttpFileFactory::create()
is checking if$content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing anexit(0)
, practically making it impossible for plugins to hook intoafter
for this method. I think I'm going to report this as an issue...
– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon as
magento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method $result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring my LISTENER_AFTER
.– Giel Berkers
Nov 8 '16 at 16:02
Thanks for the tip. I moved my intercepter one level 'lower' but it's not yet getting picked up. It picks my plugin, but as soon as
magento/framework/Interception/Interceptor.php::146
is executed (which is the call to the original method $result = parent::$method(...array_values($arguments));
), the headers already get sent and the PDF is sent. Effectively ignoring my LISTENER_AFTER
.– Giel Berkers
Nov 8 '16 at 16:02
maybe you should try an
around
plugin and call the original method inside your plugin.– Marius♦
Nov 8 '16 at 16:05
maybe you should try an
around
plugin and call the original method inside your plugin.– Marius♦
Nov 8 '16 at 16:05
Already tried
around
. Before the callable
the code gets executed, but as soon as I place it after the callable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it on before
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.– Giel Berkers
Nov 8 '16 at 16:09
Already tried
around
. Before the callable
the code gets executed, but as soon as I place it after the callable
it doesn't work. I'm trying to fetch the result of the fileFactory. Could it be that it outputs the header and exits the script? Since I can't find I way to execute code after the PDF generating, I'm now executing it on before
(which works) but it feels wrong since I only want to execute the code if I'm sure the PDF generation works.– Giel Berkers
Nov 8 '16 at 16:09
Got it! Turns out that
MagentoFrameworkAppResponseHttpFileFactory::create()
is checking if $content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing an exit(0)
, practically making it impossible for plugins to hook into after
for this method. I think I'm going to report this as an issue...– Giel Berkers
Nov 8 '16 at 16:12
Got it! Turns out that
MagentoFrameworkAppResponseHttpFileFactory::create()
is checking if $content !== null
and if it's not it indeed starts sending headers and (as I suggested) is doing an exit(0)
, practically making it impossible for plugins to hook into after
for this method. I think I'm going to report this as an issue...– Giel Berkers
Nov 8 '16 at 16:12
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
Filed: github.com/magento/magento2/issues/7356
– Giel Berkers
Nov 8 '16 at 16:19
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f144745%2fmagento-2-use-plugin-interceptor-on-abstract-class%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown