路由

因为我们把业务代码单独放在了addons,因此每个应用的每个请求都必须设置路由规则才能正常访问。

应用的路由文件必须命名为route.php,并且放在应用的根目录下,路由规则定义完全遵循thinkphp6的。

例如demo应用的路由文件为demo/route.php,其中路由规则定义如下:

<?php

use think\facade\Route;

//应用的路由文件需要返回函数,函数内部实现可完全参考tp6的路由定义规则

$addon = get_addon_name(__FILE__, 2);
$namespace = "\addons\\$addon";

return function () use ($addon, $namespace){
    $admin_namespace = $namespace . "\admin\controller\\";

    Route::group("$addon/admin/uploader", function () use ($admin_namespace) {
        $controller = $admin_namespace . "Uploader::";
        Route::rule('editorpost', $controller . "editorpost");
        Route::rule('filepost', $controller . "filepost");
        Route::rule('picturepost', $controller . "picturepost");
    });

    Route::group("$addon/admin/index", function () use ($admin_namespace) {
        $controller = $admin_namespace . "Index::";
        Route::rule('welcome', $controller . "welcome");
        Route::rule('index', $controller . "index");
    });

    Route::group("$addon/admin/article", function () use ($admin_namespace) {
        $controller =  $admin_namespace . "Article::";
        Route::rule('index', $controller . "index");
        Route::get('add', $controller . "add");
        Route::get('edit', $controller . "edit");
        Route::post('setstatus', $controller . "setstatus");
        Route::post('savepost', $controller . "savepost");
    });

    $home_namespace = $namespace . "\home\controller\\";
    Route::group("$addon/home/index", function () use ($home_namespace) {
        $controller = $home_namespace . "Index::";
        Route::rule('index', $controller . "index");
    });
};