【问题标题】:How to add another page to Silverstripe CMS admin如何向 Silverstripe CMS 管理员添加另一个页面
【发布时间】:2013-04-22 20:11:50
【问题描述】:

我一直在查看 this tutorial 向 Silverstripe (3.0.5) 的管理区域添加一个简单页面,但在 apache 日志中出现分段错误错误。

我认为问题在于“customHelp.php”中的“index”方法 - 当我将“index”重命名为其他名称时,我没有崩溃,并且在管理菜单中出现了一个条目,但显然当我没有显示任何内容时点击它。

这是我的“customHelp.php”的内容 - 有人可以指点我正确的方向吗?

<?php

class customHelp extends LeftAndMain { 

    static $url_segment = "customHelp"; 
    static $menu_title = "Site Help";     
    static $allowed_actions = array ('customHelp'); 

    public function index() { 
        return $this->renderWith('customHelp'); 
    }     

    public function init() { 
        parent::init(); 
    }
}

【问题讨论】:

  • 为什么您认为问题出在您的索引方法上?你能更具体地说明错误吗?您的 customHelp.ss 文件中有什么内容?
  • 我只是在我的网页中收到“未收到数据 - 服务器未发送数据”(网址为 mysite.local/admin/customHelp )。例如,如果我将 index() 重命名为 xindex(),则管理站点加载正常,大概是因为没有调用该方法。我的“customHelp.ss”和教程页面上的一样(存储在/customHelp/templates)

标签: php content-management-system silverstripe


【解决方案1】:

我猜该教程不正确或过时。

我在这里试了一下,报错:

Declaration of customHelp::index() should be compatible with that of LeftAndMain::index()

因此使其兼容覆盖:

public function index($request) { 
    return $this->renderWith('customHelp'); 
} 

让它在这里工作。

【讨论】:

  • 谢谢 - 我现在更进一步(不知道为什么我没有看到相同的错误消息)但是现在一旦我点击了“站点帮助”菜单项,右边- 页面的手边似乎粘住了。单击任何其他菜单项都不会删除“自定义 html 内容”文本。有任何想法吗?谢谢。
  • 我可以确认这种奇怪的行为,但我不知道为什么会发生这种情况。内容被加载但不显示。也许您应该使用 LeftAndMainExtension 而不是扩展。 doc.silverstripe.org/framework/en/howto/extend-cms-interface
  • 谢谢 - 我会试试。不要以为我选择了最好的教程;)无论如何,您的解决方案都解决了原始问题,所以谢谢。
【解决方案2】:

可能不相关,但您应该在类名中使用正确的命名约定,即使指南另有建议:

类应以大写字母http://doc.silverstripe.org/framework/en/trunk/misc/coding-conventions 开头,文件名应遵循此。

在文件区分大小写的服务器上运行时,您可能会遇到问题。

编辑:

只是告诉我索引问题可能是由未刷新的模板缓存引起的:在站点上运行 ?flush=all。

【讨论】:

  • 谢谢 - 每当我进行任何更改时,我都会在我的网站上反复运行 ?flush=all。你认为重命名类名会有帮助吗?我只是在关注那个教程页面,这就是该类的命名方式......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 2014-06-14
  • 1970-01-01
  • 2016-09-08
相关资源
最近更新 更多