2016-12-07 74 views
2

嗨,我是SilverStripe的新手。SilverStripe:如何呈现正常的模板中的每个循环

我有一些国家$AllCountries我想要使用循环在模板中呈现。

如果有模型,那么我可以很容易地做到这一点,但我想用我在这里定义的数组来做到这一点。

Array 
    (
     [AD] => Andorra 
     [AE] => United Arab Emirates 
     [AF] => Afghanistan 
     [AG] => Antigua and Barbuda 
     [AI] => Anguilla 
    ); 


<select name="Country" class="dropdown form-input" id="country"> 
     <% loop $AllCountries %> 
      <option value="$key">$value</option> 
     <% end_loop %> 
</select> 

感谢提前:)

回答

5

你需要使用ArrayList和ArrayData:

// MyPage_Controller 
public function getOptions() { 
    $data = array(
     'AD' => 'Andorra', 
     'AE' => 'UAE' 
    ); 

    $result = new ArrayList(); 
    foreach ($data as $code => $country) { 
     $arrayData = new ArrayData(array(
      'Code' => $code, 
      'Name' => $country 
     )); 

     $result->push($arrayData); 
    } 

    return $result; 
} 

// MyPage.ss 
<select name="Country" class="dropdown form-input" id="country"> 
    <% loop $Options %> 
     <option value="{$Code}">{$Name}</option> 
    <% end_loop %> 
</select> 

您可能会发现这些有用的:

+0

工作谢谢:) @kinglozzer –