Smarty包括在var中传递数组

时间:2017-08-20 14:04:42

标签: php smarty

我尝试在include的var中传递一个数组元素。

但我仍然有这个错误:

  

致命错误:未捕获 - > Smarty编译器:第6行模板“file:/home/technique/www/site/tpl/home.html”中的语法错误“{include file ='include / article-latest.html'class ='col-50'title = $ article.TITLE tag = ARTICLE_CATEGORY。$ article.CATEGORY img = $ article.THUMBNAIL view ='3526'allin ='564'}“ - 意外”。“,预期之一:”}“< - 抛出第6行/home/technique/www/common/lib/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php

我的代码:

this

显然,问题是使用常量ARTICLE_CATEGORY。似乎php常量不是由smarty解释的......

1 个答案:

答案 0 :(得分:0)

Smarty中的PHP常量可以由$ smarty.const.CONSTANT_NAME调用 参考在这里 - https://www.smarty.net/forums/viewtopic.php?p=25903&sid=92c2eb2c177f8f82ae084361ee6c4400

{foreach $latest_article.0 as $article}
    {include file='include/article-latest.html' class='col-50' title=$article.TITLE tag=$smarty.const.ARTICLE_CATEGORY.$article.CATEGORY img=$article.THUMBNAIL view='3526' share='564'}
{/foreach}

除了考虑以下因素: - TITLE和CATEGORY也可能是代码中的常量,因此必须通过$ smarty.const.TITLE和$ smarty.const.CATEGORY适当调用; - ARTICLE_CATEGORY是常量,因此奇怪的是它被用作数组; - 文章。$ article.CATEGORY可能是太深级别的数组,可能会被Smarty错误处理(因为点太多)。要修复它,您可能需要分配变量,例如:

{assign var="article_category" value=$smarty.const.ARTICLE_CATEGORY}
{foreach $latest_article.0 as $article}
    {include file='include/article-latest.html' class='col-50' title=$article.TITLE tag=$article_category.$article.CATEGORY img=$article.THUMBNAIL view='3526' share='564'}
{/foreach}