在Extension内的DataObject上调用renderWith()

时间:2014-02-11 17:58:54

标签: php silverstripe

从Silverstripe 3.0升级到3.1后,使用模板呈现DataObject不再有效。

我扩展了一个ModelAdmin,在其编辑表单中显示了一些相当复杂的标记(某些数据表)

SSViewer::set_theme('mytheme');
Requirements::clear();
$form->Fields()->insertAfter(
    new HtmlEditorField_Readonly(
        'Title', 
        '', 
        //render DataObject with template inside the form
        $analytics->renderWith('MyTpl')
    ), 
    'SomeField'
);
Requirements::restore();

在升级之前它运行得非常好,但现在失败了:

  

[用户警告]在主题中找不到这些模板   'mytheme':MyTpl.ss

(模板文件确实存在)

在此上下文中使用模板呈现DataObject有什么问题吗? 关于为什么不起作用或如何解决它的任何想法?

1 个答案:

答案 0 :(得分:3)

如上所述,如果您启用了主题(非常确定)SS可以查看该主题文件夹,您可以(或应该,有些人可以争辩)将您的模板放在mysite/templates/...下(特别是如果它们用于cms)首先是模板,有时可能会烦人并创建缓存问题......

我个人不再使用主题,我只是拥有mysite下的所有内容,我实际上称之为与我的项目相关的东西,保持整洁,易于发布。

注意:主题仍然有用,但对于可能会改变设计的网站可能更多,例如,具有xmass主题的电子商务网站。我想在SilverScoop上讨论过这个......