2.配置 HelloWorldLeftAndMain.php

如果你还没有让我们简单地启动这个文件:

class HelloWorldLeftAndMain extends LeftAndMain {

}

配置

你应该做的第一件事是定义将用于访问界面的 $url_segment,以及将出现在管理面板的侧面导航菜单中的标题($menu_title):

private static $url_segment = 'helloworld';
private static $menu_title  = 'Hello World';

以下配置变量是可选的,本指南中未使用:

private static $menu_icon   = 'helloworld/path/to/my/icon.png';
private static $url_rule    = '/$Action/$ID/$OtherID';

添加样式表和 Javascript

LeftAndMain 允许你覆盖它的父节点中的 init 方法,我们可以使用它来为我们的接口要求特定的文件。毫无疑问,你应该始终需要一个 CSS 样式表来设置用户界面的元素样式。

作为提示,建议永远不要依赖 CMS 提供的 CSS 类,因为这些可能会随时更改,恕不另行通知,随后会破坏 UI 的外观(例如,3.*4.*已经完全改变了因此,你在 3.*中依赖的任何 CSS 类都需要重新设置以转换为 4.*

所以我们添加我们的 helloworld/css/styles.css 文件:

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

    Requirements::css('helloworld/css/styles.css');
    //Requirements::javascript('helloworld/javascript/script.min.js');
}

我们不需要此示例的任何 Javascript 功能,但在上面我已经包含了如何使用 Requirements 类添加 Javascript 文件。

之后你可以采用你曾经习惯的事情来处理像 $allowed_actionsPage_Controller,但是有一个明显的区别,但是

不能覆盖 index()

相反,index() 被假定为 HelloWorldLeftAndMain_Content.ss,从那里,它需要通过模板函数处理索引显示(参见下面的示例)

完整的代码

class HelloWorldLeftAndMain extends LeftAndMain {
    private static $url_segment = 'helloworld';
    private static $menu_title  = 'Hello World';
    private static $allowed_actions = array(
        'some_action'
    );

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

        Requirements::css('helloworld/css/styles.css');
        //Requirements::javascript('helloworld/javascript/script.min.js');
    }

    public function Hello($who=null) {
        if (!$who) {
            $who = 'World';
        }

        return "Hello " . htmlentities($who);
    } 
}