2014-09-10 63 views
1

我試圖添加一系列單選按鈕的自定義窗體。我需要輸出一個列表到我可以循環的模板中。但是當我運行這個代碼時什麼都不會輸出。如果我在循環中添加文本,它只會輸出一次。輸出數組到模板

在我page_controller類

public function outputArray($array){ 
    $dl = DataList::create("DataObject"); 

    foreach ($array as $it) { 
     $do = new DataObject(); 
     $do->Value = $it; 
     $do->write(); 
     $dl->push($do); 
    } 

    return $dl; 
} 

public function NumList(){return $this->outputArray(array("0","1","2","3","4","5"));} 

在我的模板

<% loop NumList() %> 
    $Value 
<% end_loop %> 
+0

爲什麼你想輸出一個列表到模板循環?你想做什麼?我認爲可能有更好的方法來做你想做的事情。 – 3dgoo 2014-09-10 22:01:31

+0

我正在嘗試創建一個表單來對事物進行評分。所以每個速率將是一個單獨的單選按鈕,只是它們的值不同。所以如果我可以使用循環,那麼評分選項的數量可以是任意的。我同意我的解決方案並不是最好的方式,但在我的研究中,似乎這是最好的選擇。 – drawde83 2014-09-10 22:12:53

+0

如果您正在控制器中創建表單,則也可以在控制器中創建單選按鈕。您是使用html代碼在控制器中還是在模板中創建表單? – 3dgoo 2014-09-10 22:16:38

回答

3

你幾乎沒有。這是我會怎麼寫呢:

public function outputArray($array) 
{ 
    $dl = new ArrayList(); 

    foreach ($array as $it) { 
     $dl->add(array('Value' => $it)); 
    } 

    return $dl; 
} 

,並在SilverStripe模板:

<% loop $NumList %> 
    $Value 
<% end_loop %> 

如果使用Form類SilverStripe的,你應該看看這個:http://api.silverstripe.org/3.1/class-SelectionGroup.html 這將使你只需在對象上設置一個key-> value數組並獲取由SilverStripe呈現的單選按鈕即可。