SilverStripe:如何在模板中呈现正常的for-each循环

时间:2016-12-07 10:36:21

标签: php loops 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>

提前致谢:)

1 个答案:

答案 0 :(得分: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>

您可能会发现这些有用: