SilverStripe:在模板循环中呈现userforms页面类型

时间:2015-05-22 19:25:29

标签: php forms templates silverstripe

使用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
......

问题是我想以这种方式使用userforms扩展,但是在循环或控件中的模板中它只显示为页面。它似乎对表单或UserDefinedForm对象一无所知。

有没有办法让userforms在模板中呈现为子项?

1 个答案:

答案 0 :(得分:1)

快速而肮脏的测试,它似乎只在你有

时起作用
$Form 

在主题文件

它不会替换$ UserDefinedForm,因为它没有使用index()来调用render,它具有必要的scrips来替换$ UserDefinedForm位,据我所知。