Laravel初识(一) - 路由

本文介绍了Laravel框架中的路由配置,包括web.php和api.php文件的区别,基础路由的创建,如get、match和any方法,以及路由参数和视图的使用。此外,还讨论了路由分组和自定义路由文件的方法,以实现更高效和模块化的路由管理。
摘要由CSDN通过智能技术生成

1 Routes目录

默认情况下,Laravel 包含几个路由文件:web.php,api.php,console.php 以及 channels.php

提问 : web.phpapi.php 文件的区别是什么?

文件作用
web.php如果只是PC端开发,web.php 就足以够用,ajax需要使用的 route 也是定义在 web.php
api.phpapi,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. 必选参数的语法为“{参数名}”
  2. 可选参数的语法为“{参数名?}”
// 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',那么输出urlhttp://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文件作用新增自定义路由文件

  1. 修改 app\Providers\RouteServiceProvider.php 文件
    public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();
        //自定义
        $this->mapTestRoutes();
    }
  1. 新增方法
    /**
     * 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文件夹。
在这里插入图片描述

  1. 修改 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名称对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值