2014-09-03 92 views
0

我想在左側面板中顯示一些通常包含樹視圖的自定義內容。Silverstripe 3.0自定義工具面板

在本小組的東西將是一個編輯Gridfield至極應進行相關的EditForm,我試圖建立一個新的EditFormTools面板以這樣的方式

  1. 我在mysite的複製CMSMain_Content.ss /模板/包括,改變$工具到$ EditFormTools
  2. 我創建的文件CMSMain_EditFormTools.ss與此代碼相同的目錄:

    <div class="cms-content-tools west cms-panel" data-expandOnClick="true" data-layout-type="border" id="cms-content-tools-CMSMain"> 
        <div class="cms-panel-content west"> 
        <% include Test %> 
        </div> 
    </div> 
    
  3. 我創建了一個test.php的有:

    class Test extends CMSMain{ 
    
        public $var = 'test'; 
    
        public function testfunction(){ 
         $variable = 'hakuna matata'; 
         return $variable; 
        } 
    
    } 
    
  4. 然後,我創建了一個Test.ss與此代碼:

    some Text 
    $var 
    $testfunction 
    $variable 
    

小組出現在我的CMS,但現在它只包含了 「一些文本」。所以包含Test.ss的工作非常好,但是將Test.php中的變量傳遞給Test.ss不會。

任何人都可以幫忙嗎?

問候

+0

在調用$ EditFormTools之後,$ testfunction將不在範圍內。 EditFormTools是您的測試功能應該在哪裏。 – micmania1 2014-09-08 03:59:53

回答

0

它可能不會直接回答你的問題,但可以給你方向。 您需要擴展控制器類。 然後你可以使用一個被調用的函數來告訴控制器它應該使用renderWith()來使用哪個模板文件。 例如,

public function index(){ 
    return $this->renderWith("Test"); 
} 

然後在Test.ss你的函數的引用將調用test.php的功能賦予了它是控制器。 如果Test類不是控制器渲染模板,模板也不知道你的變量返回函數的位置。順便說一句,您可以將佈局中的變量傳遞給包含模板。