-
Notifications
You must be signed in to change notification settings - Fork 9.3k
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
Add dispatching of view_block_abstract_to_html_after event #3779
Add dispatching of view_block_abstract_to_html_after event #3779
Conversation
@@ -665,6 +665,15 @@ public function toHtml() | |||
} | |||
$html = $this->_afterToHtml($html); | |||
|
|||
/** @var \Magento\Framework\DataObject */ | |||
$transportObject = new \Magento\Framework\DataObject( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are at least 2 reasons not to trigger this event in AbstractBlock:
- Abstract block is overloaded with behavior
- If some block will just implement BlockInterface (not extend from AbstractBlock), this event will not be called.
Overall approach of Magento 2 is to use composition instead of inheritance to reuse behavior. In this case you need to reuse behavior common for all toHtml()
calls. Please consider putting this behavior to \Magento\Framework\View\Layout::renderNonCachedElement
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your comment.
I followed the example of view_block_abstract_to_html_before
event which is dispatched at the beginning of the toHtml()
method: in what does the approach of dispatching this event differ from mine?
Regarding your suggestion of putting the event in the \Magento\Framework\View\Layout::renderNonCachedElement
do you suggest to add both a before
and an after
event?
Furthermore, would you suggest to differentiate the event based on the element (UI component, Block or Container) or should I keep the same event for all three?
Cheers,
Alessandro
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I looked closer at implementation. Please disregard my comment.
While it would be more correct to put triggering of both before- and after- events in layout, Magenot is not ready for that, since in many places Block::toHtml() is triggered directly.
internal issue MAGETWO-54354 |
@aleron75 could you please fix unit tests. Many of them are failing after I merged latest mainline. |
Internal ticket: MAGETWO-56556 |
@mmansoorebay Will this PR be included in 2.1.3? |
[pangolins] Convert MTF tests to MFTF tests
Just like it was in Magento 1 Mage_Core_Block_Abstract class, this change is aimed at having an event dispatched after the HTML is generated by the toHtml() method.
This can be used to change HTML without the need to implement a plugin for the Magento\Framework\View\Element\AbstractBlock class.