【问题标题】:How to get child pages and loop through it's data on another page type?如何获取子页面并在另一个页面类型上循环它的数据?
【发布时间】:2015-10-26 05:18:01
【问题描述】:

我有一个TestimonalHolder 页面类型,它的子页面类型为Testimonials,每个子页面都有一个Message $db 字段来存储推荐。

问题是我如何访问我的 HomePage.ss 上的 $Message 字段,以便我可以循环浏览它们并将它们放入滑块等中。

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 {

}

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

<% loop $Children %>
    <h2>$Title</h2>
    $Message
<% end_loop %>

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    在您的 HomePage.php 中

    public function getTestimonials($limit = 5) {
        return Testimonials::get()->limit($limit);
    }
    

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

    【讨论】:

      【解决方案2】:

      在您的模板中:

      <% loop $Testimonials('BlogPost').Limit(5) %>
          $Title
      <% end_loop %>
      

      使用这个 $List 帮助器,您可以直接在模板中访问一个简单的数据列表(即使是 Filter()Sort()Limit()),尽管这有点违反纯 MVC。

      所以要小心处理!

      另见:http://www.silverstrip.es/blog/retrieving-some-dataobjects-in-template-without-php-getter/(免责声明:我的博客)

      【讨论】:

        猜你喜欢
        • 2019-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-21
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        • 2012-02-16
        相关资源
        最近更新 更多