07/11/2011, 16:35:47
Ca c'est la fonction qui chie apparemment dans la page Smarty.compiler.class.php:
apparemment le $have_function n'existe pas d'où la syntax_error
ce qui est étrange aussi, c'est quand rafraichissant la page, le message d'erreur disparait mais la page ne présente aucune trace de l'UDT, comme si elle n'était pas appelée.
Code :
function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output)
{
$found = false;
$have_function = true;
/*
* First we check if the custom function has already been registered
* or loaded from a plugin file.
*/
if (isset($this->_plugins['function'][$tag_command])) {
$found = true;
$plugin_func = $this->_plugins['function'][$tag_command][0];
if (!is_callable($plugin_func)) {
$message = "custom function '$tag_command' is not implemented";
$have_function = false;
}
}
/*
* Otherwise we need to load plugin file and look for the function
* inside it.
*/
else if ($plugin_file = $this->_get_plugin_filepath('function', $tag_command)) {
$found = true;
include_once $plugin_file;
$plugin_func = 'smarty_function_' . $tag_command;
if (!function_exists($plugin_func)) {
$message = "plugin function $plugin_func() not found in $plugin_file\n";
$have_function = false;
} else {
$this->_plugins['function'][$tag_command] = array($plugin_func, null, null, null, true);
}
}
if (!$found) {
return false;
} else if (!$have_function) {
$this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__);
return true;
}
/* declare plugin to be loaded on display of the template that
we compile right now */
$this->_add_plugin('function', $tag_command);
$_cacheable_state = $this->_push_cacheable_state('function', $tag_command);
$attrs = $this->_parse_attrs($tag_args);
$_cache_attrs = '';
$arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs);
$output = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)";
if($tag_modifier != '') {
$this->_parse_modifiers($output, $tag_modifier);
}
if($output != '') {
$output = '<?php ' . $_cacheable_state . $_cache_attrs . 'echo ' . $output . ';'
. $this->_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline;
}
return true;
}
apparemment le $have_function n'existe pas d'où la syntax_error
ce qui est étrange aussi, c'est quand rafraichissant la page, le message d'erreur disparait mais la page ne présente aucune trace de l'UDT, comme si elle n'était pas appelée.