2014-02-11 12 views
0

由於從Silverstripe 3.0升級到3.1,使用模板呈現DataObject不再有效。在分機內的DataObject上調用renderWith()

我擴展了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有什麼問題嗎?
關於爲什麼不起作用或如何解決它的任何想法?

+0

什麼是MyTpl.as的目錄路徑?您是否嘗試過在您收到警告的頁面上調用?flush = all? – 3dgoo

+0

它在一個名爲'templates/order'的子文件夾中(這在3.0中不是問題)。但我也試過'/ templates''/ templates/Includes'和'templates/Layout'(分別使用flush = all) –

+1

是模板在主題還是在mysite/module文件夾中。如果在主題中,是否啓用了正確的主題?在mysite /模板下移動它可能會有所幫助。另外,請查看?showtemplate以查看哪些模板可用。 – colymba

回答

3

正如上面你提到的可能(或應該有的可能會說)將mysite/templates/...(特別是如果他們對CMS),如果你有啓用的主題(非常肯定)SS看起來到該主題文件夾先爲模板,在你的模板這可能會有些煩人,並創建緩存問題...

我個人不再使用主題,我只是擁有在mysite下的所有東西,我實際上稱之爲與我的項目相關的東西,保持整潔和易於發佈。

注意:主題仍然有用,但對於會改變設計的網站可能更有用,例如電子商務網站(例如帶有xmass主題)。我認爲在SilverScoop上有關於此的討論...

+0

這些共享模板...(cms使用前端tpl來渲染某些數據表)。但我真的很喜歡「無主題方法」,並將所有內容都保存在mysite文件夾下,我將其命名爲'_ [projectname]'將其放在IDE的目錄列表頂部;} +1謝謝! –

+0

+1不使用主題(: – Zauberfisch