如何在 smarty 模板文件中分配数组?

Posted

技术标签:

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

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

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

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

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

如何阻止 Smarty 转义数组值?

提前致谢

【问题讨论】:

我已经解决了这个问题,并较早地提出了解决方案。我想出的解决方案是here 【参考方案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'] 呢?

【讨论】:

这适用于 Smarty v3:smarty.net/docs/en/language.syntax.variables.tpl【参考方案5】:

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

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

尽管如此...

【讨论】:

此方法不允许分配关联数组 +1 - 谢谢。这正是我们需要解决我们黑客的第三方 CMS 中的问题。 对于 smarty 的第 3 版,请参阅 Mituha 的答案。 这正好回答了问题。 有没有可以用来获取空数组的函数?

以上是关于如何在 smarty 模板文件中分配数组?的主要内容,如果未能解决你的问题,请参考以下文章

smarty模板基础

如何在 Smarty 修饰符函数中分配新变量?

Django:在模板中分配变量

在 smarty 模板中创建一个数组? [复制]

smarty 模板页面里创建数组

smarty模板学习备忘1