【问题标题】:How to use json data from external service in SilverStripe templates?如何在 SilverStripe 模板中使用来自外部服务的 json 数据?
【发布时间】:2014-10-29 17:30:08
【问题描述】:

我想将来自外部网络服务的数据放入我的 SilverStripe 网站。我可以通过以下代码获取数组 bij 中的数据:

public function getBlogs(){

$service = new RestfulService("http://www.xxxxx.com/jsonservice/BlogWeb/");
$response = $service->request("getBlogs?token=xxxxx&id=250");
print_r(json_decode($response->getBody()));

}

这在我的网站中显示了正确的数据数组。但是如何处理这些数据以在模板中使用它,例如:

<% loop getBlogs %>$Title<% end_loop %>

提前致谢。

【问题讨论】:

标签: silverstripe


【解决方案1】:

循环构造旨在遍历 ArrayLists 和 DataLists,该列表中的每个项目都旨在成为 DataObject。由于 json_decode 返回一个 PHP 对象数组,因此您的函数 getBlogs() 将需要遍历该数组并构建一个描述您的每个博客的 DataObjects 的 ArrayList。

public function getBlogs() {
        $blogs = ArrayList::create();
        if($response && $response->getStatusCode() == 200 ) {
            $data = json_decode($response->getBody());
            foreach($blogs as $blog) {
                $b = DataObject::create();
                $b->Column1 = $data->blah;
                $b->Column2 = $data->bloo;
                $blogs->push($b);
            }
        }
        return $blogs;
}

然后您的 构造将遍历 ArrayList:

<% loop getBlogs %>
    $Me.Column1 is some column. So is $Column2.
<% end_loop %>

【讨论】:

  • 这个有点老了,但是你可以省略“get”。例如&lt;% loop $Blogs %&gt;
猜你喜欢
  • 2012-12-01
  • 2018-06-25
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多