如何在SilverStripe模板中使用外部服务的json数据?

时间:2014-10-29 17:30:09

标签: silverstripe

我想将extern webservice中的数据放入我的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 %>

提前致谢。

1 个答案:

答案 0 :(得分: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;
}

您的&lt;%loop%&gt;然后,构造将遍历ArrayList:

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