使用 Smarty 模板显示数组?

Displaying Array Using Smarty Template?

我正在尝试使用 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 中可以做这样的事情吗?还是我走错了路...?

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

你不能按照你描述的顺序在 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>

当你说随机选择一个自动插入时,你可以在文本区域中随机显示一个并有一个提交按钮将该记录保存到数据库。

如果你想随机化你可以使用 $array_names_positions[mt_rand(0,count($array_names_positions)-1)] 随机播放

您可以将php代码放在.tpl文件中;在 smarty 模板文件中插入 php 代码时要小心。请务必使用:

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

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