跳至主要内容
屏幕录像 03 路由和控制器

路由与控制器

在扩展的基本结构下,常见任务是注册自己的控制器,并在管理区添加自己的菜单项。为此,我们将探讨一些你可以添加到模块定义中的附加属性。index.php

视频地址(YouTube):https://www.youtube.com/watch?v=Hi7WGVSI3aw

添加控制器

Pagekit 里的控制器其实就是普通的 PHP 类。每个正确命名的公共方法(即 )都会被 Pagekit 的路由(即 )挂载。someAction()/todo/some

创建一个包含以下代码的文件。packages/pagekit/todo/src/Controller/TodoController.php

<?php

namespace Pagekit\Todo\Controller;

/**
* @Access(admin=true)
*/
class TodoController
{

    public function indexAction()
    {
      return "Yay.";    
    }

}

为了限制对管理员区域的访问并将该控制器挂载到管理员网址,我们使用注释 。注释是关键词,放置在类或方法上方的注释栏中。了解更多关于注释的信息@Access(admin=true)

要使用这个控制器,我们需要自动加载命名空间并将控制器挂载到路由中,在你的配置数组中添加以下属性。index.php

// ...

// array of namespaces to autoload from given folders
'autoload' => [
        'Pagekit\\Example\\' => 'src'
    ],

// array of routes
    'routes' => [

    // identifier to reference the route from your code
        '@todo' => [

            // which path this extension should be mounted to
            'path' => '/todo',

            // which controller to mount
            'controller' => 'Pagekit\\Todo\\Controller\\TodoController'
        ]
    ],  

    // ...

你现在可以在 URL 访问新控制器。请注意该URL由四个部分生成:<pagekit_path>/admin/todo

  1. <pagekit_path>URL总是从你的URL开始
  2. @Access(admin=true)结果生成了一个管理员网址/admin
  3. 控制器安装方式为/todo
  4. 该URL的默认路由是 。indexAction

如果你无法访问你的路线,请清除缓存。Pagekit 缓存路由以提升性能。

调试工具栏

要查看开发过程中所有已注册的路由,启用 Pagekit 系统设置中的调试工具栏非常有用。工具栏显示在屏幕底部,显示所有已注册路线及其他有用信息。

记得关闭直播网站时的这个功能。

添加菜单项

要添加菜单项,请使用模块定义中的属性。将以下内容添加到 。menuindex.php

// ...

'menu' => [
    'example' => [
        'label'  => 'ToDo',
        'icon'  => 'app/system/assets/images/placeholder-icon.svg',
        'url'    => '@todo',
    ]
],
// ...

刷新Pagekit后端,你会看到一个新的菜单项,链接到该路线。@todo

下一步:视图与模板

这就是控制器和路由的基本工作流程。要渲染实际的视图文件而不是普通字符串,你只需要更改控制器作返回的内容。我们将在下一个视频中探讨这一点。对于好奇的人:阅读Pagekit文档中关于视图和模板的内容。

以下是所有现有屏幕录制教程的简短列表: