【问题标题】:How to assign an array within a smarty template file?如何在 smarty 模板文件中分配数组?
【发布时间】:2011-01-15 16:53:55
【问题描述】:

我想知道是否可以将数组分配给 Smarty 模板文件中的变量?这个我试过了

{assign var='file' value = array('dir','doc','exe')}

但是当我打印出数组时,它会产生:

array(\'dir\',\'doc\',\'exe\') 

如何阻止 Smarty 转义数组值?

提前致谢

【问题讨论】:

  • 我已经解决了这个问题,并较早地提出了解决方案。我想出的解决方案是here

标签: php smarty


【解决方案1】:
$smarty->assign("lat",$lat);

{foreach $lat as $latlongval}
    {assign var="myArray" value=","|explode:$latlongval} 
    {$myArray['0']}
    {$myArray['1']}
{/foreach}

【讨论】:

    【解决方案2】:

    在 smarty 模板文件中编写代码的方式不正确。您应该在 php 中创建一个数组,然后从 smarty 获取值。

    This is the right way to create a standard development code. like.
    

    PHP:

    public function arrSam(){
        $colors = array( 0 => '#1f1f1f', 1 => '#696969', 2 => '#878787', 3 => '#b4b4b4', 4 => '#d2d2d2', 5 => '#f0f0f0', 6 => '#ffffff');
        $smarty->assign('colors', $colors);
    }
    

    聪明:

    {assign var=colors value=$smarty->arrSam()}
    {$colors|print_r}
    

    【讨论】:

      【解决方案3】:
      {php}
        $this->assign("array", array('dir','doc','exe'));
      {/php}
      
      {foreach from=$array item=item}
        {$item}
      {/foreach}
      

      Smarty v.3提供了新语法

      {$array = ['item1','item2',$item3]}
      

      查看详情:http://www.smarty.net/docs/en/language.syntax.variables.tpl

      【讨论】:

      • 如果你使用 {php} 那么使用 smarty 是什么意思呢?你不应该在模板中使用 {php} 直到它是唯一的选择。 @Jenski 的解决方案很完美
      • 确保不要在最后一个元素后面放置逗号 (,)。我正在从导致语法错误的 php 复制数组。
      【解决方案4】:

      {$system=['freebsd','windows','macosx','linux']} 呢?

      【讨论】:

      【解决方案5】:

      我刚刚找到了另一个答案 here,它允许您在不使用 {php} tags 的情况下执行此操作(由 Smarty 推荐)

      {assign var='icon' value=','|explode:"dir,doc,exe"}
      

      尽管如此...

      【讨论】:

      • 此方法不允许分配关联数组
      • +1 - 谢谢。这正是我们需要解决我们黑客的第三方 CMS 中的问题。
      • 对于 smarty 的第 3 版,请参阅 Mituha 的答案。
      • 这正好回答了问题。
      • 有没有可以用来获取空数组的函数?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2011-01-25
      • 2023-03-26
      • 1970-01-01
      • 2012-06-19
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多