路由
-
路由的定义
用于和终端用户进行交互
可以在routes/web.php中定义web路由,用于终端用户进行访问,也可以在routes/api.php中定义API路由,用于提供API服务
-
routes/web.php中路由的定义
-
基本定义
// routes/web.php Route::get('/', function () { return 'Hello, World!'; });
本样例采用了最简单的方法,将路径(‘/’)与闭包结合起来使用
- 闭包是PHP版本的匿名函数。闭包是一个函数,可以将它作为一个对象传递,并赋值给一个变量,将其作为参数传递给其他函数和方法
- 现在,定义好路由后,如果有人访问 / (域名的根路径),路由就会运行定义好的闭包,同时会返回结果
继续给出一些例子
-
Route::get('/', function() { return view('welcome'); });
Route::get('/help', function() { return view('help'); });
Route::get('/about', function() { return view('about'); });
-
-
路由动词
当http使用不同的方法进行请求时,就要使用对应的路由定义
-
Route::get('/', function() { return 0; });
Route::post('/', function() {});
Route::put('/', function() {});
Route::delete('/', function() {});
Route::any('/', function() {});
Route::match(['get', 'post'], '/', function() {});
-
路由处理
-
将控制器名称和方法作为字符串传给闭包
Route::get('/', 'StaticPagesController@home');
将请求传递到静态页面控制器中的home()方法处理
-
-
路由参数
-
如果定义的路由有参数,那么可以在路由中定义它们,并将它们传递给闭包
Route::get('users/{id}/friends', function ($id){ // });
-
-
路由名称
-
要在应用程序的其他位置引用路由,可以通过路径,也可以通过对每一个路由命名,这样就可以不通过URL直接引用路由
//在web.php中定义路由 Route::get('members/{id}', 'MemberControllers@show')->name('member.show');
//使用route助手在视图中链接路由 <a href="<php echo route('member.show', ['id' => 1]); ?>"></a>
-
路由的一般命名格式
复数的资源名称 + 相应的动作
photos.index photos.create photos.store photos.show photos.edit photos.update photos.destory
-
将路由参数传递给route()助手
//定义路由 Route::get('users/{userId}/commennts/{commentId}, usersControllers@show')->name('users.comments.show'); //传入参数, http://myapp.com/users/1/comments/2 route('users.comments.show', [1,2]) route('users.comments.show', ['userId' => 1, 'commentId' => 2]) route('users.comments.show', ['commentId' => 2, 'userId' => 1])
不是关联数组里面的值会按顺序分配,关联数组里的值会按照相应的键名进行匹配,数组里面其他剩下的数据都会作为查询参数进行添加并使用
-