2016-11-05 3 views
1

Smartyと定数に問題があります。私は、ファイル内の3つの定常especifiedました:私はどのようにしてスマートに定数を得ることができますか?

DEFINE('ARTICLE_COLOUR_10', 'Light green'); 
DEFINE('ARTICLE_COLOUR_11', 'Claret'); // Bordó 
DEFINE('ARTICLE_COLOUR_12', 'Yellow'); 

DBで私は数字だけ(10、11、12)を保存し、私は

このVARを通じてこれらの数字を送信
$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を取得したいと思います。私は3つの異なる方法で試しましたが、完全な変数を得ることができませんでした。

{$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

この質問はスペルミスされている場合、私は、この問題と赦しとあなたの助けのために感謝するでしょう、私の英語は非常に高度ではありません。

+0

これは本当に '$ sql_query_int = [10、11、12];'ですか?それは配列か文字列ですか? –

答えて

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

多分あなたは$ colors | @var_dumpを試すことができます check $ value.colourが割り当てられています。

またはcolors配列

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

を割り当ててみあり、おそらく(少なくともSmartyの3に)動作する方法がありますが、Smartyのからget_defined_constantsを呼び出す含まれます

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

{$sysconst.$articlevar} 

これは一種のですあなたが望むことをする適切な方法は、定数の代わりに通常の配列や変数を使用し、通常の方法でそれらをスマートに割り当てることです。

0

スマートテンプレートでクラス定数の値を取得したい場合は、PHP constant()関数を使用できます。

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

、これが一定の値を出力:テンプレートファイルで

<?php 

namespace \MyNamespace; 

class MyClass 
{ 
    const FOO = "Bar"; 
} 

関連する問題