smarty 模板页面里创建数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了smarty 模板页面里创建数组相关的知识,希望对你有一定的参考价值。

smarty 模板页面里 怎么才能创建数组


CMPassign var="sum[]" value="";
只是想知道smarty 里能不能创建数组变量

实现方法有很多种。。可以用js、php
但是都不是我真正想要的
所以我并不是想让您告诉我怎么写。

而是想知道有没有这种创建 数组变量的方法
如果不能,那有没有什么方法可以创建出某种意义上的数组,或许它不是真正的数组,
但是能够替代数组完成工作。

感谢1楼的朋友
就算是 模板只处理数据然后输出
但是难保处理的过程中没有复杂的逻辑判断,和逻辑运算
就像是if else 、sum、avg 、
我以为我的想法并没有超出 smarty 模板功能范畴,
既然能声明 变量
为什么就不能声明有结构的对象(数组)?

参考技术A 为什么要在模板里创建?说的充分了我告诉你咋写

额,单纯的靠smarty在模板中声明变量是很不实际的问题,那样还叫什么模板,模板是用来处理变量的。要数组的话就简单最直接的方法就是从逻辑文件中申明直接扔过来。犯不着在模板中声明数组。

99%的模版中只有四个功能:引用文件,条件判断,变量设置,循环绑定。一般没必要再模板中直接声明任何变量。假如真有经常用到的变量,而且它有自己的默认值,可以考虑
<%assign var="title" value=$title|default:"..."%>

单就考虑模板语言,在这里声明一个数组我还真不知道怎么写,你知道了可以告诉我。但就用模板语言声明一个数组,没人这么写,你传过来直接声明不得了?什么是模板?意义。。本回答被提问者采纳

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

【中文标题】如何在 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 模板中创建一个数组? [复制]

PHP - Smarty 模板 - 如何创建与上下文无关的模板

smarty模板调数据库并做添加删除修改和分页

Smarty模板中使用getpostrequestcookiessession变量的方法

6月3 Smarty基础读取配置

PHP数组中可否存放对象?如果可以,那么在smarty的模板中应当如何获取对象的属性值?