smarty 模板页面里创建数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了smarty 模板页面里创建数组相关的知识,希望对你有一定的参考价值。
smarty 模板页面里 怎么才能创建数组
如
CMPassign var="sum[]" value="";
只是想知道smarty 里能不能创建数组变量
实现方法有很多种。。可以用js、php。
但是都不是我真正想要的
所以我并不是想让您告诉我怎么写。
而是想知道有没有这种创建 数组变量的方法
如果不能,那有没有什么方法可以创建出某种意义上的数组,或许它不是真正的数组,
但是能够替代数组完成工作。
感谢1楼的朋友
就算是 模板只处理数据然后输出
但是难保处理的过程中没有复杂的逻辑判断,和逻辑运算
就像是if else 、sum、avg 、
我以为我的想法并没有超出 smarty 模板功能范畴,
既然能声明 变量
为什么就不能声明有结构的对象(数组)?
额,单纯的靠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 模板页面里创建数组的主要内容,如果未能解决你的问题,请参考以下文章
PHP - Smarty 模板 - 如何创建与上下文无关的模板