- improvment better error message for undefined templates at {include}

This commit is contained in:
uwe.tews@googlemail.com
2011-09-24 18:20:13 +00:00
parent 5c0d7ad8b4
commit a98d83bbf3
4 changed files with 36 additions and 20 deletions

View File

@@ -3,6 +3,7 @@
- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application
- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable
- added compile_dir and cache_dir to list of muted directories
- improvment better error message for undefined templates at {include}
23.09.2011
- remove unused properties

View File

@@ -2,12 +2,12 @@
/**
* Smarty Internal Plugin Resource PHP
*
*
* Implements the file system as resource for PHP templates
*
*
* @package Smarty
* @subpackage TemplateResources
* @author Uwe Tews
* @author Uwe Tews
* @author Rodney Rehm
*/
class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
@@ -16,7 +16,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
* @var string
*/
protected $short_open_tag;
/**
* Create a new PHP Resource
*
@@ -24,8 +24,8 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
public function __construct()
{
$this->short_open_tag = ini_get( 'short_open_tag' );
}
}
/**
* populate Source Object with meta data from Resource
*
@@ -41,7 +41,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
if (is_object($source->smarty->security_policy)) {
$source->smarty->security_policy->isTrustedResourceDir($source->filepath);
}
$source->uid = sha1($source->filepath);
if ($source->smarty->compile_check) {
$source->timestamp = @filemtime($source->filepath);
@@ -49,7 +49,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
}
}
}
/**
* populate Source Object with timestamp and exists from Resource
*
@@ -64,7 +64,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
/**
* Load template's source from file into current template object
*
*
* @param Smarty_Template_Source $source source object
* @return string template source
* @throws SmartyException if source cannot be loaded
@@ -75,7 +75,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
return '';
}
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
}
}
/**
* Render and output the template (without using the compiler)
@@ -88,22 +88,27 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
{
$_smarty_template = $_template;
if (!$source->smarty->allow_php_templates) {
throw new SmartyException("PHP templates are disabled");
}
}
if (!$source->exists) {
throw new SmartyException("Unable to load template \"{$source->type} : {$source->name}\"");
}
if ($_template->parent instanceof Smarty_Internal_Template) {
$parent_resource = " in '{$_template->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
}
// prepare variables
extract($_template->getTemplateVars());
// include PHP template with short open tags enabled
ini_set( 'short_open_tag', '1' );
include($source->filepath);
ini_set( 'short_open_tag', $this->short_open_tag );
}
}
}
}
?>

View File

@@ -137,7 +137,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function mustCompile()
{
if (!$this->source->exists) {
throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'");
if ($this->parent instanceof Smarty_Internal_Template) {
$parent_resource = " in '$this->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'{$parent_resource}");
}
if ($this->mustCompile === null) {
$this->mustCompile = (!$this->source->uncompiled && ($this->smarty->force_compile || $this->source->recompiled || $this->compiled->timestamp === false ||

View File

@@ -116,7 +116,12 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
// checks if template exists
if (!$_template->source->exists) {
throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'");
if ($_template->parent instanceof Smarty_Internal_Template) {
$parent_resource = " in '{$_template->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
}
// read from cache or render
if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || !$_template->cached->valid) {