Is it possible to add the output of print() to a variable?
I have the following situation:
I have a php file which looks something like this:
title.php
<?php
$content = '<h1>Page heading</h1>';
print($content);
I have a php file which looks like this:
page.php
<?php
$content = '<div id="top"></div>';
$content.= $this->renderHtml('title.php');
print($content);
I have a function renderHtml()
:
public function renderHtml($name) {
$path = SITE_PATH . '/application/views/' . $name;
if (file_exists($path) == false) {
throw new Exception('View not found in '. $path);
return false;
}
require($path);
}
When I dump the content variable in page.php it doesn't contain the content of title.php. The content of title.php is just printed when it is called instead of added to the variable.
I hope it is clear what I am trying to do. If not I'm sorry and please tell me what you need to know. :)
Thanks for all your help!
PS
I have found that there was already a question like mine. But it was regarding the Zend FW.
How to capture a Zend view output instead of actually outputting it
However I think this is exactly what I want to do.
How should I setup the function so that it behaves like that?
EDIT
Just wanted to share the final solution:
public function renderHtml($name) {
$path = SITE_PATH . '/application/views/' . $name;
if (file_exists($path) == false) {
throw new Exception('View not found in '. $path);
return false;
}
ob_start();
require($path);
$output = ob_get_clean();
return $output;
}
Page heading
` – PeeHaa Jan 25 '11 at 20:07