SilverStripe: отображение типа страницы пользовательских форм в цикле шаблона

Используя SilverStripe 3.1, я выложил тип страницы FrontPage, который проходит через его дочерние элементы, чтобы создать большую страницу с прокруткой. В нем есть всевозможные типы страниц, и я обращаюсь к их шаблонам, создавая их контроллеры «на лету», добавляя к классу «Страница»:

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.

Есть ли способ получить пользовательские формы для рендеринга в качестве дочернего элемента в шаблоне?

Был быстрый и грязный тест, и, похоже, он работает только тогда, когда у вас есть

 $Form 

в файле темы

Это не заменит $ UserDefinedForm, поскольку он не вызывает рендеринг с индексом (), который имеет необходимые скрипты для замены бита $ UserDefinedForm, насколько я могу судить.