我怎么能在聪明中得到一个常数?

时间:2016-11-05 23:23:49

标签: php smarty constants

我遇到了Smarty和常量的问题。我在文件中指定了三个常量:

$sql_query_int = mysqli_query($connectdb, "SELECT colour FROM stock WHERE product='$articleId'");    
$smarty->assign('colours', $sql_query_int);

在DB中我只保存数字(10,11,12),并通过此var

发送这些数字
{foreach from=$colours key=field item=value}
    {$value.colour}<br>
{/foreach}

在TPL中,我得到了这些数字

{$smarty.const.ARTICLE_COLOUR_{$value.colour}}
{$smarty.const.ARTICLE_COLOUR_$value.colour}
{$smarty.const.ARTICLE_COLOUR_value.colour}

现在我想得到变量ARTICLE_COLOUR_ $ value.colour;我尝试了三种不同的方式但我无法获得完整的变量。

HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
   .withAddress(new InetSocketAddress("192.168.5.3", 8002))
   .withChainProxyManager(manager)
   .withTransparent(true) /* see here */
  

致命错误:Smarty错误:[在C:\ xampp \ htdocs / templates / default / tpl \ article.tpl第10行]:语法错误:$ smarty。$ value.colour是无效引用(Smarty_Compiler.class。 php,line 2169)在第1109行的C:\ xampp \ htdocs \ inc \ smarty \ Smarty.class.php

如果这个问题拼写错误,我的英语不是很先进,我将非常感谢你对这个问题的帮助和宽恕。

4 个答案:

答案 0 :(得分:3)

{constant("ARTICLE_COLOUR_{$value.colour}")}

答案 1 :(得分:0)

也许你可以试试$ colors | @var_dump 检查$ value.colour已分配。

或尝试指定颜色数组

{assign var='colours' value=','|explode:"10,11,12"}

答案 2 :(得分:0)

有一种方法可能会起作用(至少在Smarty 3中),但涉及从smarty调用get_defined_constants

{$sysconst=get_defined_constants()}
{$articlevar='ARTICLE_COLOUR_'|cat:$value.colour}

{$sysconst.$articlevar}

这是一种黑客攻击,但是......做你想做的事情的正确方法是使用常规数组或变量而不是常量,并按常规方式将它们分配给smarty

答案 3 :(得分:0)

如果你想在一个聪明的模板中得到一个类常量的值,你可以使用php constant()函数。

<?php

namespace \MyNamespace;

class MyClass
{
    const FOO = "Bar";
}

在模板文件中:

{constant('\MyNamespace\MyClass::FOO')}

并输出常数的值。