大家好!
我在我的项目中使用PHP和Smarty。 我正在使用名称空间,当我调用Smarty函数时遇到问题,样本循环
我遇到此错误:模板中的语法错误“。\ sys \ adm \ template \ fields \ inputFileField.tpl”第23行“{cycle values =”um,dois“}”unknown tag“循环“
我正在使用spl_autoload_register在项目中自动加载类:
function smartyAutoloader($className) {
$file = "sys/classes/smarty/$className.class.php";
if (file_exists($file)) {
require $file;
return true;
}
return false;
}
我没有更改Smarty类中的命名空间,所以我用这种方式导入Smarty:
use \Smarty;
如果我评论循环代码,我的代码就能正常运行。
关注是问题代码:
{for $x = 0 to 10}
{cycle values="um,dois"} {*line 23 on inputFileField.tpl*}
{/for}
我不知道在同一个项目中使用名称空间和Smarty。我确定这个错误是因为命名空间。 有人可以帮助我吗?
提前致谢
答案 0 :(得分:2)
您必须像这样设置setPluginsDir:
$dirSep = DIRECTORY_SEPARATOR;
$path = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR;
$smarty->setPluginsDir($path."smarty".$dirSep."libs".$dirSep."plugins");
答案 1 :(得分:1)
问题似乎是插件文件夹的错误或相对路径。 设置插件文件夹absolut的路径后,即使使用名称空间也可以正常工作。
还要查看Smarty documentation:
技术说明
为获得最佳性能,请勿将
$plugins_dir
设置为必须使用 PHP包含路径。使用绝对路径名或相对于的路径SMARTY_DIR
或当前工作目录。