我遇到了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
如果这个问题拼写错误,我的英语不是很先进,我将非常感谢你对这个问题的帮助和宽恕。
答案 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')}
并输出常数的值。