Capture output of another action within current action?
I have been trying to find a way to capture the output (rendered view) of another action within the current action... something akin to output buffering.
The scenario is that I need to save a "snapshot" of a report. The data used in the report is ever-changing, and for whatever reason I need to actually save the view HTML rather than just a data array. I have created a snapshotAction(), and I want to somehow capture the output of the separate reportAction() within it. I don't want to render the reportAction() to the screen, I want it to render within my current action, before the action completes.
Is there any way to do this in ZF?
Correctly answered by Benedict Cohen below, but I didn't realize it until I saw this usage in the ZF mailing list archives: How to render multiple action views?
I am using something similar:
public fu开发者_StackOverflow社区nction snapshotAction () {
$content = $this->view->action('run', 'report');
...etc...
}
There's a view helper called 'action' which may be helpful. You specify the controller and action and params and it returns the result. The helper creates a new dispatch loop so if you use it a lot it could have performance implications (I don't worry about performance until there's evidence that it's causing problems).
Take a look at this other post. The Zend_Cache classes may just help you find what you need.
精彩评论