PHP: отображение данных, извлеченных из базы данных (Silverstripe CMS)

У меня проблема с использованием Silverstripe CMS.
У меня есть базовый запрос SQL, результаты которого я хотел бы отобразить в <ul><li> меню. Это должно быть действительно легко, но я не смог просмотреть документацию. Я нашел несколько более сложных примеров (Проект, Студенты), но мне кажется, что должен быть какой-то более простой способ сделать это. Может кто-нибудь помочь или, пожалуйста, дайте мне подсказку?

Подводя итог: я хотел бы выполнить запрос db sql и отобразить данные в виде списка.

мой WishPage.php

class WishPage extends Page {
// some code which is irrelevant for this matter, but works fine
}

class WishPage_Controller extends Page_Controller {

private static $allowed_actions = array('AddNewWishForm');

public function AddNewWishForm() {
// here you can add data to db
}

// Now I would like to show it; and here is the problem.
public function ShowWishList() {
$records = DB::query ("SELECT Title FROM Wishes;");
return $records;
}

}

Мой шаблон WishPage.ss

<% include SideBar %>
<div class="content-container unit size3of4 lastUnit">

<div id="WishForm">
<h2>Try it</h2>
$AddNewWishForm
</div>

</div>

Обновить
мой Wishes.php

<?php
class Wishes extends DataObject {
private static $db = array(
'Name' => 'Text',
'Comment' => 'Text'
);
}

1

Решение

Вы можете просто использовать встроенную функциональность SS для извлечения записей из БД:

// returns the list of all wishes
public function ShowWishList() {
return Wishes::get();
}

и в интерфейсе вы можете просто:

<ul>
<% loop $ShowWishList %><li>$Name: $Comment</li><% end_loop %>
</ul>

Это требует, чтобы у вас был список DataObjects, конечно.

2

Другие решения

Решение о спекуляций должно работать хорошо.

Если вы не будете пытаться с SQLQuery

public function getWishes(){
$query = new SQLQuery();
$query->setFrom('Wishes')->setSelect('"Name", "Comment"');
//$query->addWhere('');
$result = $query->execute();
//Debug::show($result);
$list = ArrayList::create();
foreach($result as $row) {
$list->push($row);
}
return $list;
}

в теме

<ul>
<% loop $getWishes %><li>$Name: $Comment</li><% end_loop %>
</ul>
1

По вопросам рекламы [email protected]