路由

框架自带的路由组件,支持按url映射到文件的方式来执行相应的控制器,也支持定义路由路由配置。v2.7版本开始也支持第三方路由组件。除了旧版本自带的路由外也封装了FastRoute服务。有需要的话直接修改入口文件中相应的配置

框架是默认的路由组件是按url映射到文件的方式来执行相应的控制器,但是有一些情况下我们需要简短而优雅的网址便于用户记忆及SEO。这时候就需要使用url路由或者使用第三方的路由的服务。

配置章节我们介绍过,在Config目录下有route.php配置文件,我们的所有路由都配置在这个文件里,下面介绍方法及规则

相应接口


<?php

//应用路由配置文件

use Cml\Route;

//只针对get请求有效

Route::get('pattern' , 'adminbase/System/Config/show');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::get('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

     'show'//方法名

]);

//只针对post请求有效

Route::post('pattern' , 'adminbase/System/Config/update');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::post('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'update'//方法名

]);

//只针对put请求有效

Route::put('pattern' , 'adminbase/System/Config/add');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::put('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'add'//方法名

]);

//只针对delete请求有效

Route::delete('pattern' , 'adminbase/System/Config/delete');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::delete('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'delete'//方法名

]);

//只针对patch请求有效

Route::patch('pattern', 'adminbase/System/Config/patch');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::patch('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'patch'//方法名

]);

//只针对所有请求都有效

Route::any('pattern' , 'adminbase/System/Config/index');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::any('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'index'//方法名

]);

/**

 * RESTful 路由

 *

 * get 请求对应 adminbase/System/Config/getRead

 * post 请求对应 adminbase/System/Config/postRead

 * delete 请求对应 adminbase/System/Config/deleteRead

 * put 请求对应 adminbase/System/Config/putRead

 * patch 请求对应 adminbase/System/Config/patchRead

 */

Route::rest('pattern' , 'adminbase/System/Config/read');

//v2.7+建议这么写效率更高且支持应用多级子目录
Route::any('blog/bb/:aid\d', [

    'root/adminbase',//应用名,支持多级子目录

    'System/Config',//控制器,支持多级子目录

    'index'//方法名

]);

自带的路由pattern规则定义(第三方的路由请参考相对应的文档)

如我们配置了一条路由


\Cml\Route::get('list/:id\d' => [
    'web'
    'Blog/Article',
    'show'        
]);

这条路由的意思为 当用户以GET请求访问 http://域名/list/1.html 这样的地址时,框架会执行的Article控制器的list方法。 \d为匹配数字 :id意思为它是一个动态参数 且在控制器中可使用\Cml\Http\Input::getInt('id')来接收

在模板中可以使用 {{url "list/{$id}"}} 生成相应的url

分组路由


use Cml\Route;

Route::group('v1', function() {

    Route::get('user/add', 'api/User/add');

    Route::get('user/edit', 'api/User/edit');

});

这边定义了 v1分组,即匹配 v1/user/add以及v1/user/edit这两个url

多应用单独定义路由

默认情况我们的路由是定义在全局projxx/Config/route.php中。但是如果我们有多个应用。

比如有webadminapi三个应用,然后我们想在web中定义自己的路由。这时候可以在web/Config/route.php中定义web独立的路由。然后在projxxx/Config/route.php中使用 Route::loadAppRoute('web'); 将其载入即可。

results matching ""

    No results matching ""