简单的路由实例(对于Laravel来说路由是很强大的,目前我们使用的是路由到闭包,初次之外我们可以路由到控制器,视图):
Route::get('lzy', 'TestController@index);请求其他类型的路由(对于实际开发一个路由可能会有多种请求的方式)
Route::get('lzy', 'TestController@index'); Route::post('lzy', 'TestController@index'); Route::put('lzy', 'TestController@index'); Route::patch('lzy', 'TestController@index'); Route::delete('lzy', 'TestController@index'); Route::options('lzy', 'TestController@index'); Route::any('lzy', 'TestController@index'); // match 可以允许定义的类型访问 Route::match(['get', 'put', 'post'], 'test', 'TestCondtoller@index'); // 允许所有类型访问 Route::any('test', 'TestController@index'); Route::match([请求方式], '路由名', $callback); Route::any('路由名', $callback); # 路由的重定向与路由视图 Route::redirect('lzy', 'http://www.baidu.com'); #view直接渲染视图,默认指向路径到resourece目录中 Route::view('welcome', 'welcome');路由参数:
# 如果name后面没有带?的话,参数是必须传递 # 如果name后面带了 ? 的话,函数的参数必须有给默认值,否则会报错 Route::get('lzy/{name}', function ($name) { return 'name: '. $name; }); # 没有带参数的情况下 Route::get('lzy/{name?}', function ($name='没有传递参数,我是默认值') { return 'name: '. $name; }); # 注意: 路由参数通常都回在{参数名}内,并且参数名只能为字母,同时路由参数不能包含 - 符号,如果需要可以用_ 代替。路由的正则验证与路由的别名:
# 下面的where 验证是,参数值只能是字母,不能是中文和数字,否则报错 # 下面的name是,路由的别名,注意,路由别名只能在route重定向的时候使用,不能使用url访问否则报错 Route::get('lzy/{name?}', function ($name='没有传递参数,我是默认值') { return 'name: '. $name; })->where([ 'name' => '[A-Za-z]+' ])->name('zy');;路由组:
因为在项目中,我们往往是需要定义很多路由而对于这些路由可以通过路由组进行很好的管理分组,初次之外,路由组还允许共享路由属性,命名空间,前缀,中间件等,这样我们可以必要为每一个路由单独共有属性,共有属性会以数组的形式放到Route::group方法的参数中(比如:我们现在对于商城的首页访问添加一个前缀shop)
Route::group(['prefix' => 'shop'], function () { Route::group(['prefix' => 'goods'], function () { Route::get('goodsinfo', function () { return '商品详情页面'; }); Route::get('cart', function () { return '购物车页面'; }); }); Route::get('index', function () { return '商城首页'; }); }); ## 如果你想要访问商品的详情页面 应该这样访问:http://localhost/index.php/shop/goods/goodsinfo路由模型:
我们可以通过路由绑定我们所许哟的模型,必须我们可以传递一个而路由参数为id,然后就可以获取到我们想要的模型实例(也就是你所填写的模型必须存在,还要传递一个参数,该参数最后会作为where条件来查询)
## 注意:user模型必须有,而要传递参数,是根据你传的参数值,最总会通过where id = 你穿过来的参数进行where查询 Route::get('model{user}', function (App\Modes\Users\User $user) { dd($user); });自定义路由
比如现在你想要有一个路由,专门访问后台的,其他不干涉到,我们可以自定义一个路由
首先需要到App\Providers\RouteServiceProvider.php文件中 # 这里开服务的时候,就要调用你刚刚新建的路由文件 public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); // $this->mapAdminRoutes(); } /** * * 自定义路由 */ protected function mapAdminRoutes() { Route::middleware('web') ->namespace('App\Http\Controllers\Admin') ->group(base_path('routes/admin.php')); } ## 然后到routes目录中新建一个跟你刚刚自定义的路由名一致的路由文件(admin.php)