我如何才能获得 smarty 的常量?
How can a I get a constant in smarty?
我遇到了 Smarty 和常量的问题。我在文件中指定了三个常量:
DEFINE('ARTICLE_COLOUR_10', 'Light green');
DEFINE('ARTICLE_COLOUR_11', 'Claret'); // Bordó
DEFINE('ARTICLE_COLOUR_12', 'Yellow');
在 DB 中我只保存数字 (10, 11, 12) 并且我通过这个变量发送这些数字
$sql_query_int = mysqli_query($connectdb, "SELECT colour FROM stock WHERE product='$articleId'");
$smarty->assign('colours', $sql_query_int);
在 TPL 我得到了那些数字
{foreach from=$colours key=field item=value}
{$value.colour}<br>
{/foreach}
现在我想获取变量ARTICLE_COLOUR_$value.colour;我尝试了三种不同的方法,但我无法获得完整的变量。
{$smarty.const.ARTICLE_COLOUR_{$value.colour}}
{$smarty.const.ARTICLE_COLOUR_$value.colour}
{$smarty.const.ARTICLE_COLOUR_value.colour}
Fatal error: Smarty error: [in C:\xampp\htdocs/templates/default/tpl\article.tpl line 10]: syntax error: $smarty.$value.colour is an invalid reference (Smarty_Compiler.class.php, line 2169) in C:\xampp\htdocs\inc\smarty\Smarty.class.php on line 1109
如果这个问题拼错了,我将不胜感激,我的英语不是很高级。
也许你可以试试 $colours|@var_dump
检查 $value.colour 是否已分配。
或尝试分配颜色数组
{assign var='colours' value=','|explode:"10,11,12"}
有一种方法可能会起作用(至少在 Smarty 3 中),但涉及从 smarty 调用 get_defined_constants
:
{$sysconst=get_defined_constants()}
{$articlevar='ARTICLE_COLOUR_'|cat:$value.colour}
{$sysconst.$articlevar}
这是一种 hack,不过......做你想做的事情的正确方法是使用常规数组或变量而不是常量,然后以通常的方式将它们分配给 smarty
{constant("ARTICLE_COLOUR_{$value.colour}")}
如果您想在 smarty 模板中获取 class 常量的值,您可以使用 php constant()
函数。
<?php
namespace \MyNamespace;
class MyClass
{
const FOO = "Bar";
}
在模板文件中:
{constant('\MyNamespace\MyClass::FOO')}
这将输出常量的值。
我遇到了 Smarty 和常量的问题。我在文件中指定了三个常量:
DEFINE('ARTICLE_COLOUR_10', 'Light green');
DEFINE('ARTICLE_COLOUR_11', 'Claret'); // Bordó
DEFINE('ARTICLE_COLOUR_12', 'Yellow');
在 DB 中我只保存数字 (10, 11, 12) 并且我通过这个变量发送这些数字
$sql_query_int = mysqli_query($connectdb, "SELECT colour FROM stock WHERE product='$articleId'");
$smarty->assign('colours', $sql_query_int);
在 TPL 我得到了那些数字
{foreach from=$colours key=field item=value}
{$value.colour}<br>
{/foreach}
现在我想获取变量ARTICLE_COLOUR_$value.colour;我尝试了三种不同的方法,但我无法获得完整的变量。
{$smarty.const.ARTICLE_COLOUR_{$value.colour}}
{$smarty.const.ARTICLE_COLOUR_$value.colour}
{$smarty.const.ARTICLE_COLOUR_value.colour}
Fatal error: Smarty error: [in C:\xampp\htdocs/templates/default/tpl\article.tpl line 10]: syntax error: $smarty.$value.colour is an invalid reference (Smarty_Compiler.class.php, line 2169) in C:\xampp\htdocs\inc\smarty\Smarty.class.php on line 1109
如果这个问题拼错了,我将不胜感激,我的英语不是很高级。
也许你可以试试 $colours|@var_dump 检查 $value.colour 是否已分配。
或尝试分配颜色数组
{assign var='colours' value=','|explode:"10,11,12"}
有一种方法可能会起作用(至少在 Smarty 3 中),但涉及从 smarty 调用 get_defined_constants
:
{$sysconst=get_defined_constants()}
{$articlevar='ARTICLE_COLOUR_'|cat:$value.colour}
{$sysconst.$articlevar}
这是一种 hack,不过......做你想做的事情的正确方法是使用常规数组或变量而不是常量,然后以通常的方式将它们分配给 smarty
{constant("ARTICLE_COLOUR_{$value.colour}")}
如果您想在 smarty 模板中获取 class 常量的值,您可以使用 php constant()
函数。
<?php
namespace \MyNamespace;
class MyClass
{
const FOO = "Bar";
}
在模板文件中:
{constant('\MyNamespace\MyClass::FOO')}
这将输出常量的值。