【发布时间】:2015-08-04 22:26:30
【问题描述】:
使用 SilverStripe 3.1 我已经布置了一个 FrontPage 页面类型,该页面类型循环通过其子项以生成一个大而高的滚动页面。它有各种不同的页面类型,我通过添加到 Page 类来动态创建它们的控制器来访问它们的模板:
class Page extends SiteTree {
.....
function RenderAsChild($templateName = null) {
if(!$templateName) $templateName = $this->ClassName;
if(!$this->pageController){
$class = $this->ClassName . "_Controller";
$this->pageController = new $class($this);
}
return $this->pageController->renderForHolderPage($templateName);
}
在控制器中:
class Page_Controller extends ContentController {
....
function renderForHolderPage($templateName = null) {
if(!$templateName) $templateName = $this->ClassName;
return $this->renderWith(array($templateName));
}
通过这种方式,我可以轻松地呈现页面并管理它们的模板和特殊功能,同时在模板中仍然以相同的方式处理它们,例如:
<% loop $Children %>
<% if $ClassName = 'FancyPage' %>
$RenderAsChild
......
问题是我想以这种方式使用用户表单扩展,但在循环或控件中的模板中,它只显示为页面。它似乎对表单或 UserDefinedForm 对象一无所知。
有没有办法让用户表单在模板中呈现为子级?
【问题讨论】:
标签: php forms templates silverstripe