在Silverstripe 4中访问和输出$ ElementalArea

时间:2018-10-29 02:41:49

标签: silverstripe silverstripe-4

在Silverstripe 4项目中,我们在PageController.php下使用以下方法将页面内容输出为JSON:

class PageController extends ContentController
{

 private static $allowed_actions = array(
     'json'
 );

 public function json(HTTPRequest $request)
 {
     $data = array();
     $data['ID'] = $this->ID;
     $data['Title'] = $this->Title;
     $data['Breadcrumbs'] = $this->obj('Breadcrumbs')->forTemplate();
     $data['Content'] = $this->obj('Content')->forTemplate();
     $this->response->addHeader('Content-Type', 'application/json');
     return json_encode($data);
 }
}

现在,我想对运行Elemental module的页面执行相同的操作。元素允许页面内容由许多动态/可配置块生成。

要访问元素,我使用以下模板代码:$ElementalArea-返回生成的HTML。

我需要将以下行替换为返回由$ElementalArea生成的HTML的行:

$data['Content'] = $this->obj('Content')->forTemplate();

我不确定执行此操作的正确方法,希望您提出任何建议。

1 个答案:

答案 0 :(得分:2)

完全相同-$this->ElementalArea()->forTemplate()