PHP:显示从数据库中检索的数据(Silverstripe CMS)

时间:2014-10-13 18:10:37

标签: php silverstripe

使用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'
    );
}

2 个答案:

答案 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>