Skip to content

路由

路由介绍

路由使用的是webman的路由,具体文档可以参考webman路由

默认路由

webman默认路由规则是 http://127.0.0.1:8787/{控制器}/{动作}。

默认控制器为app\controller\IndexController,默认动作为index。

例如访问:

http://127.0.0.1:8787 将默认访问app\controller\IndexController类的index方法 http://127.0.0.1:8787/foo 将默认访问app\controller\FooController类的index方法 http://127.0.0.1:8787/foo/test 将默认访问app\controller\FooController类的test方法 http://127.0.0.1:8787/admin/foo/test 将默认访问app\admin\controller\FooController类的test方法

如果你想关闭默认路由,在配置文件 config/route.php里最后一行加上如下配置:

php
Route::disableDefaultRoute();

自定义路由

自定义路由是在config/route.php中进行配置,saiadmin核心使用的就是 自定义路由。在代码生成器中,如果直接生成到项目中,采取的就是默认路由,没有生成额外的路由文件配置

内置方法fastRoute

为了方便使用,saiadmin提供了内置方法fastRoute,使用方法定义如下:

php
if (!function_exists('fastRoute')) {
    /**
     * 快速注册路由[index|save|update|read|changeStatus|destroy|import|export]
     * @param string $name
     * @param string $controller
     * @return void
     */
    function fastRoute(string $name, string $controller): void
    {
        $name = trim($name, '/');
        if (method_exists($controller, 'index')) Route::get("/$name/index", [$controller, 'index']);
        if (method_exists($controller, 'save')) Route::post("/$name/save", [$controller, 'save']);
        if (method_exists($controller, 'update')) Route::put("/$name/update", [$controller, 'update']);
        if (method_exists($controller, 'read')) Route::get("/$name/read", [$controller, 'read']);
        if (method_exists($controller, 'changeStatus')) Route::post("/$name/changeStatus", [$controller, 'changeStatus']);
        if (method_exists($controller, 'destroy')) Route::delete("/$name/destroy", [$controller, 'destroy']);
        if (method_exists($controller, 'import')) Route::post("/$name/import", [$controller, 'import']);
        if (method_exists($controller, 'export')) Route::post("/$name/export", [$controller, 'export']);
    }
}

具体的使用方式可以参考 SaiAdminconfig\route.php

注意

该方法实际上是直接定义了8个路由,方便我们用简洁的代码就注册常用的全部路由,当然在控制器中存在的路由才会生效,如果你的控制器中不包含这些路由,那么不会生成对应的路由。