Content management system Silverstripe 3.0自定义工具面板

Content management system Silverstripe 3.0自定义工具面板,content-management-system,panel,silverstripe,Content Management System,Panel,Silverstripe,我想在左侧面板中显示一些定制内容,通常包含treeview 由于此面板中的内容将是一个可编辑的Gridfield,它应该与EditForm相关,因此我尝试以这种方式构建一个新的EditFormTools面板: 我在mysite/templates/Includes中复制了CMSMain_Content.ss,并将$Tools更改为$EditFormTools 我使用以下代码在同一目录中创建了文件CMSMain_EditFormTools.ss: <div class="cms-conten

我想在左侧面板中显示一些定制内容,通常包含treeview

由于此面板中的内容将是一个可编辑的Gridfield,它应该与EditForm相关,因此我尝试以这种方式构建一个新的EditFormTools面板:

我在mysite/templates/Includes中复制了CMSMain_Content.ss,并将$Tools更改为$EditFormTools 我使用以下代码在同一目录中创建了文件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>
some Text
$var
$testfunction
$variable
然后我用以下代码创建了一个Test.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>
some Text
$var
$testfunction
$variable
面板现在出现在我的CMS中,但它只包含一些文本。因此Test.ss的include工作得非常好,但是将变量从Test.php传递到Test.ss却不行

有人能帮忙吗


问候语

它可能不会直接回答您的问题,但可能会为您指明方向。 您需要扩展控制器类。 然后,您可以使用一个被调用的函数来告诉控制器应该使用renderWith使用哪个模板文件。 比如说,

  public function index(){
     return $this->renderWith("Test");
 }
然后,Test.ss中的函数引用将调用Test.php中的函数,前提是它是控制器。 如果测试类不是呈现模板的控制器,则模板不知道变量返回函数的位置。
顺便说一下,您可以将变量从布局传递到包含模板

调用$EditFormTools后,$testfunction将不在作用域中。EditFormTools是testfunction应该位于的位置。