自定义模板无法呈现

时间:2016-08-10 06:34:03

标签: php silverstripe

这是我的NgFieldGroup.ssFieldGroup.ss加上$AttributesHTML

的直接副本
<div $AttributesHTML class="<% if $extraClass %>$extraClass<% else %>fieldgroup<% end_if %><% if $Zebra %> fieldgroup-zebra<% end_if %>" <% if $ID %>id="$ID"<% end_if %>>
    <test-bad-html>
    <% loop $FieldList %>
        <div class="fieldgroup-field $FirstLast $EvenOdd">
            $SmallFieldHolder
        </div>
    <% end_loop %>
    </test-bad-html>
</div>

模板由表单

中的以下内容分配
FieldGroup::create(null,[ /*...*/ ])->setAttribute("ng-show","action")->setTemplate("NgFieldGroup")

正如您在此图片中看到的那样,调试器显示$this->getTemplate()明确分配了NgFieldGroup,但在基本renderWith方法中,它无处可见。

Debugger Info

这里发生了什么?

2 个答案:

答案 0 :(得分:0)

您的NgFieldGroup.ss似乎是字段持有者的模板 - 而不是字段?您可以使用$field->setFieldHolderTemplate("NgFieldGroup");

设置FieldHolder

答案 1 :(得分:0)

作为最后的手段,您始终可以在那里指定模板,然后......使用fromString ...

FieldGroup::create(null,[ /*...*/ ])
    ->setAttribute("ng-show","action")
    ->setTemplate(SSViewer::fromString('
        <div $AttributesHTML class="<% if $extraClass %>$extraClass<% else %>fieldgroup<% end_if %><% if $Zebra %> fieldgroup-zebra<% end_if %>" <% if $ID %>id="$ID"<% end_if %>>
            <test-bad-html>
            <% loop $FieldList %>
            <div class="fieldgroup-field $FirstLast $EvenOdd">
                $SmallFieldHolder
            </div>
            <% end_loop %>
            </test-bad-html>
        </div>
    '));

不漂亮,但消除了模板来自何处的所有混淆。