1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 四 PHP框架Laravel学习笔记——路由命名和分组

四 PHP框架Laravel学习笔记——路由命名和分组

时间:2020-06-11 16:16:39

相关推荐

四 PHP框架Laravel学习笔记——路由命名和分组

一.路由命名

给一个制定好的路由进行命名,可以生成 URL 地址或进行重定向;

Route::get('task', 'TaskController@index')->name('task.index');

在控制器区域,使用助手函数 route()来获取路由生成的 URL 地址;

//生成 url 地址,http://localhost:8000/task

route('task.index');

PS:URL 是 URI 的子集,更多区别请百度;

route()助手的第二参数为参数,第三参数为是否包含域名 URL

// http://localhost:8000/task?id=10

route('task.index', ['id'=>10]);

// /task?id=10

$url = route('task.index', ['id'=>10], false);

PS:如果需要更改成/task/10 模式,路由需要相应更改 task/{id}

使用 redirect()助手结合 route()生成一个重定向跳转,注意不要自我死跳;

//生成重定向

return redirect()->route('task.index', ['id'=>10]);

二.路由分组

路由分组功能是为了让大量路由共享路由属性,包括中间件、命名空间等;

//一个空的分组路由 Route::group([], function () {Route::get('index/{id}', function ($id) {return 'index'.$id; }); Route::get('task/{id}', function ($id) {return 'task'.$id; }); });

路由分组第一种写法:

路由分组第二种写法:(推荐)

可以将中间件作用域路由分组中,有两种写法,至于中间件?后续章节讲解;

//引入中间件,方法一

Route::group(['middleware'=>'中间名'], function () {});

//引入中间件,方法二

Route::middleware(['中间件'])->group(function () {});

可以设置路由路径前缀,通过 prefix 来设置,也有两种方法,具体如下: //引入路由前缀,方法一

Route::group(['prefix'=>'api'],function () {});

//引入路由前缀,方法二

Route::prefix('api')->group(function () {});

可以设置子域名,从而限定路由可执行的域名,有两种方法,具体如下:

//引入子域名,方法一

Route::group(['domain'=>'127.0.0.1'], function () {});

//引入子域名,方法二

Route::domain('127.0.0.1')->group(function () {});

5. 可以设置命名空间,让命名空间分配给控制器,让其得以访问,具体如下:

//命名空间,方法一

Route::group(['namespace'=>'Admin'],function () {});

//命名空间,方法二

Route::namespace('Admin')->group(function () {});

PS:在 Controller 目录下创建 Admin 目录,再其目录下创建的控制器命名空间如下: namespace App\Http\Controllers\Admin;

可以设置名称前缀,方式两种,也可以嵌套,具体如下:

//名称前缀,方式一

Route::group(['as'=>'task.'], function () {Route::get('task', 'TaskController@index')->name('index'); Route::get('task/url', 'TaskController@url'); });

//名称前缀,方式二

Route::name('task.')->group( function () {}); //生成 URL $url = route('task.index'); return $url; //嵌套方式命名前缀 Route::name('task.')->group(function () {Route::name('abc.')->group(function () {Route::get('task', 'TaskController@index')->name('index'); }); Route::get('task/url', 'TaskController@url'); }); //生成 URL $url = route('task.abc.index'); return $url;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。