On 28.10.2009, at 22:53, Nestor A. Diaz wrote:

Hello, i want to know if there is any possibility to disable the output of the rendering template when an exception occurs, right now processing stop if there is any exception but the page is shown until the error was made, i use the execute method, not the echoExecute, which is supposed not to output the document.

I need to create a webpage that is going to be send by email, not to display on the web browser, if the templates throws an exception i can catch it, but i don't want it to be displayed truncated on the web browser, is there any way to disable this behavior ?

Hm, execute() uses buffering already, so it shouldn't output anything... unless you get a fatal error during execution of the template. In that case PHP takes over and outputs PHPTAL's buffer anyway. Only fatal errors (mostly invalid syntax in php: or your custom modifiers if you have any) could be problematic, regular errors (unclosed tags, missing variable) should always end cleanly.

Does catching of exceptions help?

try {
  $phptal->execute()
}
catch(PHPTAL_Exception $e) {
// do whatever you'd do when template fails, $e->getMessage() will give you the error.
}


If not, then try:

function on_die_handler($output)
{
 global $can_output;
 if ($can_output) return $output; else return '';
}

ob_start('on_die_handler');
$can_output=false;

$phptal->execute();

$can_output=true;
ob_end();

--
regards, Kornel




_______________________________________________
PHPTAL mailing list
PHPTAL@lists.motion-twin.com
http://lists.motion-twin.com/mailman/listinfo/phptal

Reply via email to