首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
7.1 调用小部件的两种方式
7.1.1 调用widget()方法使用小部件DatePicker
7.1.2 调用begin()和end()方法使用小部件ActiveForm
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
7.2.1 调用小部件ActiveForm
7.2.2 “文章标题”文本输入框
7.2.3 “文章栏目”下拉列表框
7.2.4 “文章图片”上传文件输入框
7.2.5 “内容”文本输入域
7.3 自定义小部件
7.3.1 继承Widget
7.3.2 自定义小部件的MVC结构
7.4 项目实现迭代九:自定义首页幻灯片小部件
7.5 项目实现迭代十:分页显示列表页
7.5.1 分页组件Pagination
7.5.2 新闻中心列表页实现数据填充
7.5.3 分页的超链接列表小部件LinkPager
8.1 初识资源包类
8.2 Yii2框架资源管理代码分析
8.2.1 视图中注册资源包类
8.2.2 注册资源文件
8.2.3 输出缓冲区的数据
8.3 AssetBundle类的成员属性
8.4 项目实现迭代十一:本书配套项目实现前端资源管理
8.4.1 实现首页前端资源管理
8.4.2 实现新闻中心列表页前端资源管理
9.1 模型中编写验证规则
9.2 控制器中安全赋值
9.3 控制器中触发验证
9.4 视图中提取错误信息
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证
10.1 AJAX简介
10.2 传统的JavaScript实现AJAX验证
10.2.1 创建AJAX引擎XMLHttpRequest对象
10.2.2 创建HTTP请求
10.2.3 设置响应HTTP请求状态变化的方法
10.2.4 设置获取服务器返回数据的语句
10.2.5 发送HTTP请求
10.3 jQuery实现AJAX验证
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证
11.1 用户登录-表单模型
11.2 用户登录-客户端验证
11.2.1 ActiveForm实现客户端验证代码分析
11.2.2 项目实现迭代十四:完成登录页面的客户端验证
11.3 模型中的自定义方法作为rules()验证器
11.4 用于验证用户名和密码的身份类UserIdentity
11.5 项目实现迭代十五:完成用户登录
11.6 保存用户登录状态的yii\web\User类
12.1 访问控制技术综述
12.2 RBAC简介
12.3 RBAC需求分析及功能概述
12.4 项目实现迭代十六:最简方式实现RBAC
12.4.1 数据库设计
12.4.2 用户管理
12.4.3 角色管理
12.4.4 权限管理
12.4.5 用户—角色配置管理
12.4.6 角色—权限配置管理
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现 RBAC
12.5.1 基本概念
12.5.2 用户管理
12.5.3 角色管理
12.5.4 权限管理
12.5.5 权限管理系统验证
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
12.6.1 配置
12.6.2 使用的数据库表
12.6.3 路由列表
12.6.4 角色列表
12.6.5 用户列表
12.6.6 菜单列表
12.6.7 集成AdminLTE后台主题及菜单展示
12.6.8 基于存取控制过滤器(ACF)的用户登录页面
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(中)
小册名称:Yii2框架从入门到精通(中)
### 12.6.3 路由列表:Yii2框架中的URL管理与路由策略深度解析 在Yii2框架中,路由(Routing)系统是连接前端URL与后端控制器(Controller)和动作(Action)的桥梁,它决定了当用户访问特定URL时,应用程序将如何响应。路由列表(Route List)作为这一系统的重要组成部分,不仅定义了应用程序中所有可能的路由规则,还直接影响了URL的美观性、SEO友好性以及应用的安全性。本章节将深入解析Yii2框架中的路由列表概念、配置方法、高级特性以及最佳实践,帮助读者从入门到精通这一关键领域。 #### 1. 路由列表基础概念 在Yii2中,路由是指将URL映射到控制器和动作的规则。每个路由都遵循一定的格式,通常表示为`模块ID/控制器ID/动作ID`(如果未使用模块,则模块ID可省略)。路由列表则是一系列这样的规则集合,它们定义了应用程序能够响应的所有有效URL路径。 - **控制器ID**:对应控制器类的名称(首字母大写,无Controller后缀)。 - **动作ID**:对应控制器中方法的名称(通常首字母小写,遵循CamelCase命名规范)。 - **模块ID**(可选):表示应用中的模块,用于组织和管理大型项目中的功能块。 #### 2. 路由配置 在Yii2中,路由主要通过应用程序的配置文件(通常是`web.php`或`backend/web.php`,取决于你的应用结构)中的`urlManager`组件进行配置。以下是一个基本的路由配置示例: ```php 'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, // 开启美化URL 'showScriptName' => false, // 隐藏入口脚本名称 'rules' => [ // 路由规则列表 'post/<id:\d+>' => 'post/view', // 示例规则,将/post/123映射到PostController的view动作,其中id为参数 'about' => 'site/about', // 简单的路由映射 // 更多规则... ], ], // 其他组件配置... ], ``` - **enablePrettyUrl**:启用美化URL功能,使URL更加简洁易读。 - **showScriptName**:是否在URL中显示入口脚本名称(通常是`index.php`),设置为`false`可隐藏它。 - **rules**:定义路由规则,是路由列表的核心部分。 #### 3. 路由规则详解 路由规则可以非常灵活,支持正则表达式、通配符等多种匹配方式。以下是一些常见的路由规则类型和用法: - **简单映射**:如`'about' => 'site/about'`,直接将URL `/about` 映射到`SiteController`的`about`动作。 - **带参数的映射**:如`'post/<id:\d+>' => 'post/view'`,这里`<id:\d+>`是一个正则表达式,表示匹配一个或多个数字作为`id`参数,传递给`PostController`的`view`动作。 - **默认路由**:如果URL不匹配任何已定义的规则,Yii2会尝试将URL分解为`模块ID/控制器ID/动作ID`的形式。如果没有指定模块,则默认为应用程序的根模块。 - **通配符**:可以使用`*`作为通配符来匹配任意字符序列,并将其作为参数传递给控制器动作。 - **嵌套路由**:在模块内部定义的路由规则会遵循`模块ID/控制器ID/动作ID`的格式,模块ID作为路由规则的前缀。 #### 4. 路由的高级特性 Yii2的路由系统还提供了一些高级特性,以增强路由的灵活性和功能性: - **RESTful路由**:Yii2支持RESTful风格的路由,通过配置`enableStrictParsing`和`enablePrettyUrl`等选项,可以自动将HTTP请求方法(GET、POST、PUT、DELETE等)映射到相应的动作。 - **URL生成**:Yii2提供了`Url::to()`和`Url::toRoute()`方法用于生成URL,这使得在视图、控制器或其他地方动态构建URL变得简单。 - **自定义URL规则**:通过继承`yii\web\UrlRule`类,可以实现自定义的URL解析和生成逻辑,满足复杂的应用需求。 - **路由缓存**:为了提高性能,Yii2允许对路由规则进行缓存,减少每次请求时的解析开销。 #### 5. 最佳实践 - **保持URL简洁**:利用`enablePrettyUrl`和合理的路由规则设计,使URL更加简洁、易于记忆和SEO友好。 - **避免使用复杂参数**:尽量在路由中使用简单的参数,避免在URL中包含过多复杂逻辑,这有助于保持URL的清晰和一致性。 - **合理组织模块**:对于大型项目,使用模块来组织功能块,并通过路由规则来区分不同模块下的控制器和动作。 - **利用RESTful路由**:对于需要实现RESTful API的项目,充分利用Yii2的RESTful路由功能,简化API设计和实现。 - **测试和调试**:定期测试路由规则,确保它们按预期工作。使用Yii2的调试工具来跟踪和解决路由相关的问题。 ### 结语 通过本章的学习,我们深入了解了Yii2框架中的路由列表概念、配置方法、高级特性以及最佳实践。路由作为连接前端和后端的桥梁,在Web应用中扮演着至关重要的角色。掌握Yii2的路由系统,不仅有助于提升应用的性能和用户体验,还能为后续的维护和扩展打下坚实的基础。希望读者能够将这些知识应用到实际项目中,不断提升自己的技术水平和应用开发能力。
上一篇:
12.6.2 使用的数据库表
下一篇:
12.6.4 角色列表
该分类下的相关小册推荐:
Magento2主题开发高级实战
PHP程序员面试笔试真题与解析
PHP8入门与项目实战(5)
Yii2框架从入门到精通(上)
PHP8实战小册
Magento2后端开发高级实战
PHP8入门与项目实战(7)
Magento零基础到架构师(库存管理)
PHP高并发秒杀入门与实战
PHP8入门与项目实战(4)
Laravel(10.x)从入门到精通(十二)
剑指PHP(从入门到进阶)