如何获取子页面并在其他页面类型上循环显示其数据?

ifu*_*ion 4 silverstripe

我有一个TestimonalHolder页面类型,其Testimonials页面类型为其子项,每个子项都有一个Message$ db字段来存储证词.

问题是如何$Message在我HomePage.ss的例子中访问该字段,以便我可以遍历它们并将它们放入滑块等.

Testimonials.php

class Testimonials extends Page {
    private static $db = array(
        'Message' => 'Text'
    );

    public function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->addFieldsToTab('Root.Testimonials', array(
            TextareaField::create('Message')
        ));

        return $fields;
    }
}

class Testimonials_Controller extends Page_Controller {

}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过在我的TestimonialHolder.ss页面上使用此代码来遍历它们:

<% loop $Children %>
    <h2>$Title</h2>
    $Message
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)

小智 7

在你的HomePage.php中

public function getTestimonials($limit = 5) {
    return Testimonials::get()->limit($limit);
}
Run Code Online (Sandbox Code Playgroud)

然后在你的模板中,$Testimonials像你一样使用$Children.