使用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'
);
}
答案 0 :(得分:2)
您可以使用SS内置功能从数据库中获取条目:
// returns the list of all wishes
public function ShowWishList() {
return Wishes::get();
}
在前端你可以:
<ul>
<% loop $ShowWishList %><li>$Name: $Comment</li><% end_loop %>
</ul>
这要求你有一个DataObjects列表。
答案 1 :(得分:1)
spekulatius的决定应该运作良好。
如果您不尝试使用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>