gpt4 book ai didi

php - Silverstripe:作为 JSON 的 CMS 页面?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:03 26 4
gpt4 key购买 nike

我正在从事 Silverstripe 项目,我希望有一种简单的方法将 CMS 生成的页面(或页面的子类型)的内容呈现为 JSON。

理想情况下,我想在路由末尾附加“/json”,或者通过 post (json=true) 发送参数并获得 JSON 格式的响应。

我尝试像这样向我的 CustomPage_Controller 类添加一个操作:

public static $allowed_actions = array('json');
public function json(SS_HTTPRequest $request) {
// ...
}

但我不知道如何让它工作:

  • 我应该使用什么 URL/路由?
  • 如何获取页面内容?

最佳答案

您走在正确的轨道上。您只需在 json 操作中执行类似这样的操作:

public function json(SS_HTTPRequest $request) {

$f = new JSONDataFormatter();
$this->response->addHeader('Content-Type', 'application/json');
return $f->convertDataObject($this->dataRecord);

}

或者对于特定的字段你可以这样做:

public function json(SS_HTTPRequest $request) {

// Encode specific fields
$data = array();
$data['ID'] = $this->dataRecord->ID;
$data['Title'] = $this->dataRecord->Title;
$data['Content'] = $this->dataRecord->Content;

$this->response->addHeader('Content-Type', 'application/json');
return json_encode($data);

}

如果你将上面的内容放在你的 Page.php 文件的 Controller 中,并且你的所有其他页面都扩展了 Page_Controller 那么你应该能够转到 http://mydomain/xxxx/json 并获取任何页面的 JSON 输出。

关于php - Silverstripe:作为 JSON 的 CMS 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17460168/

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