gpt4 book ai didi

php - 如何将自定义数据传递给模板

转载 作者:可可西里 更新时间:2023-11-01 13:37:11 24 4
gpt4 key购买 nike

我是 OOP 框架的新手,尤其是 Silverstripe。我敢肯定我错过了一些重要的东西!

我目前正在尝试为我的主页创建一个 Twitter 提要。在我的 Page_controller 中我有:

public function getTwitterFeed() { ... }

...获取一组推文。我可以按照自己喜欢的方式格式化这些数据,因此数据的结构和函数应该无关紧要。

在 Silverstripe 教程中,他们给出了以下示例:

public function LatestNews($num=5) {
$holder = NewsHolder::get()->First();
return ($holder) ? News::get()->filter('ParentID', $holder->ID)->sort('Created', 'DESC')->limit($num) : false;
}

然后在模板中调用如下:

<% loop LatestNews %>
<% include NewsTeaser %>
<% end_loop %>

但是此函数基于 DataModel 对象 (NewsHolder) 并从数据库中获取数据(我的 Twitter 函数不是)。

那么这个函数应该返回什么类型的变量呢?数组?一个对象?

最佳答案

在 SilverStripe 3.0 中有两个叫做 <% loop %> 的东西和 <% with %>

  • <% loop %>期望任何实现 SS_List 的东西(例如:DataList、ArrayList)
  • <% with %>接受我认为扩展 ViewAbleData 的任何类型的对象(例如:DataObject、ArrayData、...)

(在 SilverStripe 2.x 中只有 <% control %> 可以完成这两项工作)

所以,你想做<% loop TwitterFeed %> ?然后你需要返回一个ArrayList

一个简短的例子(未经测试,但应该可以工作):

    public function getTwitterFeed() {
return new ArrayList(array(
new ArrayData(array(
'Name' => 'Zauberfisch',
'Message' => 'blubb',
)),
new ArrayData(array(
'Name' => 'Foo',
'Message' => 'ohai',
)),
new ArrayData(array(
'Name' => 'Bar',
'Message' => 'yay',
))
));
}


<% loop TwitterFeed %>
$Name wrote: $Message<br />
<% end_loop %>

所以,只需将从 twitter 获取的数组转换为 ArrayData 对象,然后将它们全部放入 ArrayList(每条推文应为 1 个 ArrayData 对象)

关于php - 如何将自定义数据传递给模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com