Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 function snapshotAction () {
    $content = $this->view->action('run', 'report');
    ...etc...
}
like image 806
wizzard Avatar asked Jun 01 '10 22:06

wizzard


1 Answers

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).

like image 133
Benedict Cohen Avatar answered Sep 28 '22 10:09

Benedict Cohen