2015-01-20 105 views
0

我試圖用Smarty自動將數據插入textarea使用Smarty模板顯示數組?

有兩行將被插入。這裏是一個插入內容的例子:

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中做了這樣的事情,還是我在完全錯誤的軌道上?

回答

0

無法創建在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) 洗牌

你可以把代碼放在.tpl文件;當你在一個聰明的模板文件中插入php代碼時很容易。請務必使用:

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

在您的smarty模板中。不要將太多的php代碼與模板文件混合在一起;它違背了模板的目的以保持平衡。如果php代碼有很多邏輯,你應該把它放在一個聰明的控制器中。

+0

這看起來幾乎正是我正在尋找的內容,但它看起來像它需要它被輸入到.php文件中,而我只能訪問Smarty的(.tpl)模板文件。它可以修改爲在.tpl中工作,因爲這正是我正在尋找的... – Username 2015-01-20 21:42:28

0

你可以在php中引用rand(0, count($array-names)-1),將它傳遞給smarty並將其用作Smarty中的數組的關鍵字。在您所描述

然後用這個下面的方法中的smarty顯示陣列,例如順序

+0

實際上我這麼做的問題是,與smarty模板關聯的PHP文件是加密的,因此我無法對其進行任何更改:( – Username 2015-01-20 21:04:07

+0

然後在smarty中生成隨機數。 ='rand(0,count(array-names))'assign ='selection'}' – 2015-01-20 21:08:04