В Silverstripe 4 я хотел бы использовать два цикла на одном шаблоне страницы.Массивы создаются внутри одной функции внутри моего Page Controller.
Моя идея состояла в том, чтобы создать два ArrayList, а затем объединить их в третий ArrayList, который я передаю шаблону.
Используя SQLSelect, у меня есть некоторый код, который создает ArrayList данных.$ queryArray - это массив пар ключ => значение.
$sqlQuery = new SQLSelect();
$sqlQuery->setFrom('Wine');
$sqlQuery->addWhere($queryArray);
$results = $sqlQuery->execute();
$SSArrayList = new ArrayList; //new ArrayList;
foreach($results as $result) {
$SSArrayList->push(new ArrayData($result));
}
У меня есть другой код, который создает другой ArrayList из тех же результатов $:
foreach($results as $result) {
if (!empty($result['BrandName'])) {
$JSBrandsArray->push(array('Brandname'=>$result['BrandName']));
}
}
Затем третий ArrayList объединяет эти два массива:
$mainArray = new ArrayList;
$mainArray->push($SSArrayList);
$mainArray->push($JSBrandsArray);
$ mainArray передается в шаблон следующим образом:
return $this->customise(array('MainArray'=>$mainArray))->renderWith("Layout/WinesList");
Затем в шаблоне WinesList.ss я подумал, что мог бы сделать что-то вроде этого:
<% loop $MainArray %>
<% loop $SSArrayList %>
// show results from $SSArrayList
<% end_loop %>
<% loop $JSBrandsArray %>
// show results from $JSBrandsArray
<% end_loop %>
<% end_loop %>
Если яvar_dump () $ mainArray из контроллера страницы, $ mainArray, похоже, содержит все данные, но я не могу понять, как правильно получить доступ к данным из шаблона.
Возможно ли это вообще?Если так, что я делаю не так?