PHP与命名空间和Smarty错误:未知标签“循环”

时间:2013-09-05 23:56:54

标签: php namespaces smarty spl-autoload-register

大家好!

我在我的项目中使用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。我确定这个错误是因为命名空间。 有人可以帮助我吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

您必须像这样设置setPluginsDir:

$dirSep = DIRECTORY_SEPARATOR;
$path = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR;
$smarty->setPluginsDir($path."smarty".$dirSep."libs".$dirSep."plugins");

答案 1 :(得分:1)

我发现了post at the Smarty forum

问题似乎是插件文件夹的错误或相对路径。 设置插件文件夹absolut的路径后,即使使用名称空间也可以正常工作。

还要查看Smarty documentation

  

技术说明

     

为获得最佳性能,请勿将$plugins_dir设置为必须使用   PHP包含路径。使用绝对路径名或相对于的路径   SMARTY_DIR或当前工作目录。