|
二 、 lavarel 中的路由
概述: routes/web.php,用于处理终端用户通过 Web 浏览器直接访问的请求, 【后台专用】
routes/api.php,用于处理其他接入方的 API 请求(通常是跨语言、跨应用的请求)。【前后台分离用】
2.1 路由请求
Route::get('/', function () {});
Route::post('/', function () {});
Route::put('/', function () {});
Route::delete('/', function () {});
此外,还可以通过 Route::any 定义一个可以捕获任何请求方式的路由:
Route::any('/', function () {});
指定路由请求方式:
Route::match(['get', 'post'], '/', function () {});
控制器+ 方法 【App\Http\Controllers\WelcomeController 控制器的 index方法】
Route::get('/', 'WelcomeController@index');
2.2 路由参数:
2.2.1参数路由机制
Route::get('user/{id}', function ($id) {
return "用户ID: " . $id;
});
2.2.2可选参数路由机制+ 设定默认值
Route::get('user/{id?}', function ($id = 1) {
return "用户ID: " . $id;
});
2.2.3路由参数正则匹配 【访问不正确 会进404】
Route::get('page/{id}', function ($id) {
return '页面ID: ' . $id;
})->where('id', '[0-9]+');
Route::get('page/{name}', function ($name) {
return '页面名称: ' . $name;
})->where('name', '[A-Za-z]+');
Route::get('page/{id}/{slug}', function ($id, $slug) {
return $id . ':' . $slug;
})->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']);
2.2.4 【在控制器中,接收路由的参数】
2.2.4.1 web.php 文件中 Route::get('/m/{id?}', 'TestConTroller@index');
2.2.4.2 控制器中:
public function index( $id=1 )
{
return '进来了'.$id;
}
2.3 路由命名 【主要是在前后端不分离的基础上,在视图模板中调用路由】
2.3.1 <a href="{{ url('/') }}"> 这是在模板中输出,当前域名+ 当前位置
2.3.2 命名路由与前端引用
2.3.2.1 后端路由配置多了一个name :
Route::get('user/{id?}', function ($id = 1) {
return "用户ID: " . $id;
})->name('user.profile');
2.3.2.2 前端模板输出 【route 为辅助函数】
<a href="{{ route('user.profile', ['id' => 100]) }}">
// 输出:http://blog.test/user/100
// 在参数顺序一致的情况下简化 <a href="{{ route('user.profile', [100]) }}">
|
|