2

每个人!

我在我的项目中使用 PHP 和 Smarty。我正在使用命名空间,并且在调用 Smarty 函数时遇到问题,用于示例循环

我遇到了这个错误:第 23 行的模板“.\sys\adm\template\fields\inputFileField.tpl”中的语法错误“{cycle values="um,dois"}”未知标签“cycle”

我正在使用 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。我确定这个错误是因为命名空间。有人能帮我吗?

提前致谢

4

2 回答 2

2

您必须像这样设置 setPluginsDir:

$dirSep = DIRECTORY_SEPARATOR;
$path = dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR;
$smarty->setPluginsDir($path."smarty".$dirSep."libs".$dirSep."plugins");
于 2015-10-22T13:13:16.253 回答
1

我找到了这个在 Smarty 论坛上找到了这篇文章

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

还可以查看Smarty 文档

技术说明

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

于 2014-10-31T19:13:58.560 回答