I want to execute some code right before the layout is rendered, after all other code is executed. Where would I put that code?
I am specifically trying to modify the files referenced in the headLink, headScript, and inlineScript view helpers before they're used by the layout.
Here are the steps I want to take:
- Loop over the files in those view helpers
- Make a list of the local files
- Remove local files from the view helpers
- Reference the local file list as a parameter to a server script that combines them for a single HTTP request
- Add that new combine script reference to the appropriate view helper
It doesn't appear that a Front Controller Plugin is going to help me accomplish this, and here's why:
postDispatch()
gets executed after every controller action that's executed, and I need the full list of stylesheets/javascriptsdispatchLoopShutdown()
gets executed after the controller action loop, but the layout has already been rendered at this point
As Rufinus suggested, I solved this by extending the View Helpers. My question from that angle as well as the solution is here.
see Orginal PDF created by Thorsten Ruf (Mirror)
the very last part you can access via plugin should be dispatchLoopShutdown
EDIT: For ZendFramework2 see http://zendframework2.de/en/cheat-sheet.html or this gdoc
来源:https://stackoverflow.com/questions/2253170/zend-framework-last-code-to-execute-before-layout-is-rendered