【问题标题】:PHP with namespaces and Smarty error: unknown tag "cycle"带有命名空间和 Smarty 错误的 PHP:未知标签“循环”
【发布时间】:2013-09-09 23:08:47
【问题描述】:

大家!

我在我的项目中使用 PHP 和 Smarty。 我正在使用命名空间,但在调用 Smarty 函数时遇到问题,例如 cycle

我遇到了这个错误:模板中的语法错误“.\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;

如果我注释 cycle 代码,我的代码可以正常工作。

下面是有问题的代码:

{for $x = 0 to 10}
    {cycle values="um,dois"} {*line 23 on inputFileField.tpl*}
{/for}

我不知道在同一个项目中使用命名空间和 Smarty。我确定这个错误是因为命名空间。 有人可以帮我吗?

提前致谢

【问题讨论】:

  • 有没有办法让我们从inputFileField.tpl 看到Line 23
  • 感谢您的回答!!这是我的代码的一部分:{for $x = 0 to 10} {cycle values="um,dois"} {* line 23 *} {/for}
  • 这段剪辑代码实际上应该做什么?
  • 这只是一个测试,因为我在我的项目中使用了命名空间,而我的 Smarty 自定义函数没有工作。然后,我想在做一个简单的代码来测试,我发现所有 smarty 函数都不起作用。

标签: php namespaces smarty spl-autoload-register


【解决方案1】:

你必须像这样设置 setPluginsDir:

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

【讨论】:

    【解决方案2】:

    我找到了这个post at the Smarty forum

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

    也看看Smarty documentation

    技术说明

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

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多