文章目录
1 Routes目录
默认情况下,
Laravel
包含几个路由文件:web.php,api.php,console.php
以及channels.php
提问 : web.php
和 api.php
文件的区别是什么?
文件 | 作用 |
---|---|
web.php | 如果只是PC 端开发,web.php 就足以够用,ajax需要使用的 route 也是定义在 web.php 中 |
api.php | api,php 常用于 非网站开发 |
项目启动
启动
php artisan serve
清理
php artisan config:cache
php artisan cache:clear
2 基础知识
2.1 基础路由
Route::get('basicRoute',function (){
return 'Hello World';
});
2.2 配置路由
路由需要在
routes/web.php
文件中进行配置,Route
类定义路由的方式:
Route::get('/hello', function () {
return 'hello';
});
同时匹配get和post请求方式
Route::match(['get', 'post'], 'test1', function () {
return '通过match()匹配';
});
匹配任意请求方式
Route::any('test2', function () {
return '通过any()匹配';
});
2.3 路由参数
路由参数分为必选参数和可选参数,
- 必选参数的语法为
“{参数名}”
- 可选参数的语法为
“{参数名?}”
// 1.必选参数
Route::get('find/{id}', function ($id) {
return '输入的id为' . $id;
});
// 2.可选参数
Route::get('find2/{id?}', function ($id=0) {
return '输入的id为' . $id;
});
2.4 路由中输出视图
参照以下路径创建hello.blade.php
文件,并在web.php书写以下代码。
view
函数 可以直接定位到 resources/views
目录,参数是 resources/views
目录下的文件名去掉 blade.php
后缀。
如果将·'/'
改成'/test1'
或者'test1'
,那么输出url
是http://yourUrl/test1
。
2.5 路由分组
为了方便路由的管理,对路由进行分组,分组后可以对一组路由统一进行管理,例如下面一组路由:
/admin/login
/admin/logout
/admin/index
/admin/user/add
/admin/user/del
分组后:
Route::group(['prefix' => 'admin'], function () {
Route::get('login', function () {
return '这里是/admin/login';
});
Route::get('logout', function () {
return '这里是/admin/logout';
});
Route::get('user/add', function () {
return '这里是/admin/user/add';
});
});
如果你在使用路由群组,可以通过在路由群组的属性数组中指定 as
关键字来为群组中的路由设置一个共用的路由名前缀:
Route::group(['as' => 'admin::'], function () {
Route::get('dashboard', ['as' => 'dashboard', function () {
// 路由被命名为 "admin::dashboard"
}]);
});
3 自定义路由文件
3.1 route文件下自定义路由文件
目的:route
下新增test.php
文件作用新增自定义路由文件
- 修改
app\Providers\RouteServiceProvider.php
文件
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//自定义
$this->mapTestRoutes();
}
- 新增方法
/**
* Define the "test" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapTestRoutes()
{
Route::namespace($this->namespace)
->group(base_path('routes/test.php'));
}
这样就可以完成调用了
3.2 route自定义路由文件夹
上述方法可能会导致代码结构看上去很不舒服,所以参考上述流程,在routes下新建一个web文件夹。
- 修改
app\Providers\RouteServiceProvider.php
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//自定义
$this->mapTestRoutes();
$this->mapPageRoutes();
}
// 新增方法
protected function mapPageRoutes()
{
Route::namespace($this->namespace)
->group(base_path('routes/web/page.php'));
}
这样的好处是路由和Controller
名称对应。