zoukankan      html  css  js  c++  java
  • tp5 路由定义

    路由定义

    | Route::rule('路由表达式','路由地址','请求类型');         
    > route 目录下的任何路由定义文件都是有效的,默认的路由定义文件是 route.php 
    > 可以更改文件名,或者添加多个路由定义文件(你可以进行模块定义区分,但最终都会一起加载)。
    > 请求类型参数不区分大小写。   

    路由规则:

    注册路由到index模块的News控制器的read操作
    | Route::rule('new/:id','index/News/read');
    我们访问:
    | http://serverName/new/5
    会自动路由到:
    | http://serverName/index/news/read/id/5
    并且原来的访问地址会自动失效。  

    快捷方式注册

    1.   GET     GET请求      get
    2.   POST     POST请求    post
    3.   PUT     PUT请求    put
    4.   DELETE   DELETE请求     delete
    5.   PATCH     PATCH请求        patch
    6.   *        任何请求类型     any
    | Route::快捷方法名('路由表达式','路由地址');

      使用示例如下:
      Route::get('new/:id','News/read'); // 定义GET请求路由规则
      Route::post('new/:id','News/update'); // 定义POST请求路由规则
      Route::put('new/:id','News/update'); // 定义PUT请求路由规则
      Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
      Route::any('new/:id','News/read'); // 所有请求都支持的路由规则

    注册多个路由规则后,系统会依次遍历注册过的满足请求类型的路由规则,一旦匹配到正确的路由规则后则开始执行最终的调度方法,后续规则就不再检测。id 可以通过函数参数获取,也可通过request()->param()获取

    路由表达式

    规则表达式

    通常包含静态地址和动态地址,或者两种地址的结合,例如下面都属于有效的规则表达式:

    Route::rule('/', 'index'); // 首页访问路由
    Route::rule('my', 'Member/myinfo'); // 静态地址路由
    Route::rule('blog/:id', 'Blog/read'); // 静态地址和动态地址结合
    Route::rule('new/:year/:month/:day', 'News/read'); // 静态地址和动态地址结合
    Route::rule(':user/:blog_id', 'Blog/read'); // 全动态地址

    注:规则表达式的定义以 / 为参数分割符(无论你的 PATH_INFO 分隔符设置是什么,请确保在定义路由规则表达式的时候统一使用 / 进行URL参数分割,除非是使用组合变量的情况);

      每个参数中以 : 开头的参数都表示动态变量,并且会自动绑定到操作方法的对应参数;

      URL访问 PATH_INFO 分隔符使用 pathinfo_depr 配置,但无论如何配置,都不影响路由的规则表达式的路由分隔符定义。

    可选定义

    支持对路由参数的可选定义,例如:

    Route::get('blog/:year/[:month]','Blog/archive'); //变量用 [ ] 包含起来后就表示该变量是路由匹配的可选变量

    下面的URL访问地址都可以被正确的路由匹配:
    http://serverName/index.php/blog/2015
    http://serverName/index.php/blog/2015/12

    注:可选参数只能放到路由规则的最后,如果在中间使用了可选参数的话,后面的变量都会变成可选参数。 

    完全匹配 

    如果希望URL进行完全匹配,可以在路由表达式最后使用 $ 符号,例如:

    Route::get('new/:cate$', 'News/category');
    这样定义后
    http://serverName/index.php/new/info
    会匹配成功,而
    http://serverName/index.php/new/info/2
    则不会匹配成功。
    如果是采用
    Route::get('new/:cate', 'News/category');
    方式定义的话,则两种方式的URL访问都可以匹配成功。
    如果需要全局进行URL完全匹配,可以在 app.php 中设置
    // 开启路由完全匹配
    'route_complete_match' => true,

    额外参数

    在路由跳转的时候支持额外传入参数对(额外参数指的是不在URL里面的参数,隐式传入需要的操作中,有时候能够起到一定的安全防护作用,后面我们会提到)。例如:

    Route::get('blog/:id','blog/read?status=1&app_id=5');

    上面的路由规则定义中额外参数的传值方式都是等效的。 status 和 app_id 参数都是URL里面不存在的,属于隐式传值,当然并不一定需要用到,只是在需要的时候可以使用。参数值可以通过request()->param()获取。

    路由标识

    如果你需要快速的根据路由生成URL地址,可以在定义路由的时候指定生成标识(但要确保唯一)。

    // 注册路由到index模块的News控制器的read操作
    Route::name('new_read')->rule('new/:id','index/News/read');
    生成路由地址的时候就可以使用
    url('new_read',['id'=>10]);
    如果不定义路由标识的话,使用下面的方式生成
    url('index/News/read',['id'=>10]);
    V5.
    1.6+ 版本开始,路由标识的用法调整,原来的用法: // 注册路由到index模块的News控制器的read操作 Route::name('new_read')->rule('new/:id','index/News/read'); 需要改为: // 注册路由到index模块的News控制器的read操作 Route::rule('new/:id','index/News/read')->name('new_read'); 因为后者更符合语义。
  • 相关阅读:
    Json对象与Json字符串互转(4种转换方式)
    Web.config配置文件详解
    jQuery BlockUI Plugin Demo 6(Options)
    jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
    jQuery BlockUI Plugin Demo 4(Element Blocking Examples)
    jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
    jQuery BlockUI Plugin Demo 2
    <configSections> 位置引起的错误
    关于jQuery的cookies插件2.2.0版设置过期时间的说明
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/xuey/p/9609922.html
Copyright © 2011-2022 走看看