使用Smarty模板显示数组?

时间:2015-01-20 20:57:23

标签: php smarty

我正在尝试使用Smarty自动将数据插入textarea

将插入两行。以下是插入内容的示例:

John Doe
Level 1, Support Tech

显然,每个名字都有一个与之相关的位置。

我想它应该是这样的:

$array-names = array("John Joe", "Jane Doe", "Random Name");
$array-positions = array("Level 1, Support Tech", "Level 2, Sales Staff", "Level 2, Billing Team");

然后我只需要随机选择一个自动插入 - 但它们需要匹配。例如,John Doe应始终列出Level 1, Support Tech

在Smarty做这样的事情还是在完全错误的轨道上......?

2 个答案:

答案 0 :(得分:0)

你可以在php中使用rand(0, count($array-names)-1),将其传递给smarty并将其用作Smarty中数组的键。

答案 1 :(得分:0)

你不能按照你描述的顺序在Smarty中创建一个数组

然后在smarty中使用以下方法来显示数组,例如:

<?php
//an organized array with names and positions that match
$array_names_positions = array(1 => array('Name' => 'John Doe', 'position' => 'Level 1, Support Tech'),
                              2 => array('Name' => 'Jane Doe', 'position' => 'Level 2, Sales Staff')
                              3 => array('Name' => 'Random Name', 'position' => 'Level 2, Billing Team')
                    );

//assign the array to $items var
$smarty->assign('items', $array_names_positions);

//draw a textarea and display the array, (you can work on your display mechanism to limit or to display all here
<textarea>
{foreach from=$items key=myId item=i}
  {$i.name}: {$i.position}
{/foreach}
</textarea>

当你说随机选择一个自动插入时,你可以在textarea中随机显示一个并有一个提交按钮将该记录保存到db。

如果你想随机分配,你可以使用 $ array_names_positions [mt_rand(0,计数($ array_names_positions)-1)] 洗牌

您可以将php代码放在.tpl文件中;当你在一个聪明的模板文件中插入PHP代码时。一定要使用:

{php}
//php code here
{/php} 

在你聪明的模板中。不要将太多的PHP代码与模板文件混在一起;它违背了模板的目的,以保持平衡。如果php代码有很多逻辑,你应该把它放在一个聪明的控制器中。