变量规则
V5.1.14+
版本开始 可以在app.php
配置文件中自定义默认的变量规则:
'default_route_pattern'=>'[w-]+',
系统默认的变量规则设置是
w+
。
支持在规则路由中为变量用正则的方式指定变量规则 弥补了动态变量无法限制具体的类型问题 并且支持全局规则设置。使用方式如下:
局部变量规则
局部变量规则 仅在当前路由有效:
// 定义GET请求路由规则 并设置name变量规则Route::get('new/:name', 'News/read') ->pattern(['name' => 'w+']);
不需要开头添加
^
或在最后添加$
也不支持模式修饰符 系统会自动添加。
全局变量规则
设置全局变量规则 全部路由有效:
// 设置name变量规则(采用正则定义)Route::pattern('name', 'w+');// 支持批量添加Route::pattern(['name' => 'w+','id' => 'd+', ]);
组合变量规则
如果你的路由规则比较特殊 可以在路由定义的时候使用组合变量。
Route::get('item-<name>-<id>', 'product/detail')->pattern(['name' => 'w+', 'id' => 'd+']);
组合变量的优势是路由规则中没有固定的分隔符 可以随意组合需要的变量规则和分割符 例如路由规则改成如下一样可以支持:
Route::get('item<name><id>', 'product/detail')->pattern(['name' => '[a-zA-Z]+', 'id' => 'd+']); Route::get('item@<name>-<id>', 'product/detail')->pattern(['name' => 'w+', 'id' => 'd+']);
使用组合变量的情况下如果需要使用可选变量 则可以使用下面的方式:
Route::get('item-<name><id?>', 'product/detail')->pattern(['name' => '[a-zA-Z]+', 'id' => 'd+']);
V5.1.6+
版本开始 路由规则中的变量定义更加灵活 整个路由规则就是个组合变量设计 例如你可以直接使用下面的路由定义:
Route::get('item/:name-:id', 'product/detail')->pattern(['name' => 'w+', 'id' => 'd+']);
5.1.6+
版本以上 推荐统一使用<var>
变量方式 效率更高。
动态路由
可以把路由规则中的变量传入路由地址中 就可以实现个动态路由 例如:
// 定义动态路由Route::get('hello/:name', 'index/:name/hello');
name
变量的值作为路由地址传入。
动态路由中的变量也支持组合变量及拼装 例如:
Route::get('item-<name>-<id>', 'product_:name/detail')->pattern(['name' => 'w+', 'id' => 'd+']);
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题