在 smarty 模板中创建一个数组? [复制]
Posted
技术标签:
【中文标题】在 smarty 模板中创建一个数组? [复制]【英文标题】:Create an array in smarty template? [duplicate] 【发布时间】:2012-02-14 07:03:42 【问题描述】:我需要从 smarty 模板中的其他一维数组创建一个新数组。 那么,在模板文件中创建数组的最佳可能性是什么。
谢谢, 萨钦
【问题讨论】:
【参考方案1】:我不建议这样做,但这个插件允许这样做:http://smarty.incutio.com/?page=set
【讨论】:
【参考方案2】:Smarty3 允许您$var = ['foo' => 'bar', 'sub' => [1, 2, 3]]
和$var.foo = 'other'
如果这些选项还不够,请写plugin function。
【讨论】:
我已经尝试过这个建议并且它有效。 Smarty 文档中似乎没有记录此功能,这使此建议对我来说更有价值。【参考方案3】:在过去,我使用了两种方法——一种邪恶的和一种肮脏的——在 tpl 中快速分配一个数组:
* Am I evil? *
php
$array = array("cat", "dog", "rabbit");
$this->assign("myArray", $array);
/php
* Am I dirty? *
assign var='myArray' value=','|explode:"cat,dog,rabbit"
这两种方法都会导致您的数组在模板中可用,以构建一个简单的循环。无论如何,我总是以这种方式更改我的代码,所以我根本不需要这些东西。
【讨论】:
我不喜欢第一种方法,因为“内联” php 代码。第二种解决方案有点棘手,但在没有任何黑客攻击的情况下仍然有效。投了赞成票! 它适用于 smarty-v2!【参考方案4】:从 MVC 的角度来看,它的 View 部分只负责显示数据。我鼓励您重新考虑应用程序,以允许您处理模型中的数据并将其传递给仅在视图中显示。
【讨论】:
您如何处理模型中的表格(包含行),这样就不会有任何 html 标记?您仍然需要在视图中传递整个数据数组并从中构建动态表。 @Andrew 我的答案是否遗漏了什么?我没有说视图必须是静态的,我只是指出所有的数据处理都应该在模型中完成并传递给视图进行显示。 Catalin> 是的,我明白你的意思。我只是想知道是否有办法防止模板循环。而且 AFAIK 没有任何... @Andrew 你可以,但它不会有效。例如,您可以循环一个函数,它只呈现表格的一行或类似的东西。【参考方案5】:其实很简单:
assign 'myArray' ['cat', 'dog', 'rabbit']
【讨论】:
它适用于版本 2 吗? @SébastienGarcia-Roméo 不幸的是没有。以上是关于在 smarty 模板中创建一个数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章