首页
技术小册
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框架从入门到精通(中)
### 7.1 调用小部件的两种方式 在Yii2框架中,小部件(Widgets)是一种非常灵活且强大的组件,它们能够封装复杂的逻辑和视图代码,使得开发者能够在不同的地方重用这些代码片段。小部件广泛应用于生成动态内容、表单元素、菜单、导航栏等场景。掌握小部件的调用方法,对于提高开发效率和代码复用性至关重要。本章将详细介绍在Yii2中调用小部件的两种主要方式:通过视图文件直接调用和使用`Widget`类在控制器或视图中间接调用。 #### 7.1.1 通过视图文件直接调用小部件 在Yii2中,最简单直接调用小部件的方式是在视图文件中使用`Yii::$app->view->widget`方法或者通过别名直接调用。这种方式适用于直接在视图中需要展示小部件内容的场景。 ##### 1. 使用`Yii::$app->view->widget`方法 `Yii::$app->view->widget`方法是Yii2提供的一个全局可访问的方法来渲染小部件。这个方法接受至少一个参数,即你想要渲染的小部件的类名,并且可以接收额外的参数来配置小部件的属性。 ```php // 在视图文件中直接调用小部件 echo Yii::$app->view->widget('path\to\WidgetClass', [ 'option1' => 'value1', 'option2' => 'value2', // ... 其他配置项 ]); ``` 这里`'path\to\WidgetClass'`应该替换为小部件的完整命名空间路径。`['option1' => 'value1', ...]`是一个数组,包含了传递给小部件构造器或配置方法的参数。 ##### 2. 使用别名直接调用 如果小部件已经在应用的配置文件中通过别名注册,那么可以直接在视图文件中使用别名来调用它,这种方式更加简洁。 首先,在应用的配置文件中注册小部件别名(通常是在`components`下的`view`组件中配置): ```php // 在配置文件中的components部分 'components' => [ 'view' => [ 'class' => 'yii\web\View', // ... 其他配置 'widgets' => [ 'myWidget' => 'path\to\WidgetClass', ], ], // ... 其他组件 ], ``` 然后,在视图文件中,你可以直接使用别名来调用小部件: ```php // 使用别名调用小部件 echo $this->widget('myWidget', [ 'option1' => 'value1', 'option2' => 'value2', // ... 其他配置项 ]); ``` 注意,在视图文件中,`$this`指向的是当前的视图对象,它继承自`yii\web\View`,因此可以直接调用`widget`方法来渲染小部件。 #### 7.1.2 使用`Widget`类在控制器或视图中间接调用 虽然直接在视图文件中调用小部件是最常见的方式,但在某些情况下,你可能需要在控制器中准备数据,并在视图中以更灵活的方式展示这些数据。这时,可以在控制器中实例化小部件类,并在视图中通过变量来引用小部件的渲染结果。 ##### 1. 在控制器中实例化小部件 在控制器中,你可以像实例化其他类一样实例化小部件类,并通过调用其`run`方法(如果该类继承自`yii\base\Widget`且没有重写`__invoke`方法)或者直接调用(如果重写了`__invoke`方法或使用了`yii\base\View`的`renderWidget`方法)来获取小部件的渲染结果。 ```php // 在控制器中 public function actionIndex() { // 实例化小部件并获取渲染结果 $widget = new \path\to\WidgetClass(); $widget->option1 = 'value1'; $widget->option2 = 'value2'; // 假设小部件类没有重写__invoke方法,使用run方法 $widgetContent = $widget->run(); // 将渲染结果传递给视图 return $this->render('index', [ 'widgetContent' => $widgetContent, ]); } ``` 注意,这种方法需要小部件类支持直接调用`run`方法获取渲染结果,并且这种方法在处理复杂逻辑时可能会让控制器变得过于臃肿。 ##### 2. 在视图中展示小部件的渲染结果 一旦在控制器中准备好了小部件的渲染结果,就可以在视图中直接展示这些内容了。 ```php // 在视图中 <?= $widgetContent ?> ``` 这种方法虽然提供了更大的灵活性,但通常不是首选,因为它将视图逻辑与控制器逻辑混合在一起,违反了MVC模式的最佳实践。不过,在某些特定场景下,比如需要在控制器中处理复杂逻辑后再展示小部件内容时,这种方法是非常有用的。 #### 总结 调用Yii2中的小部件主要有两种方式:通过视图文件直接调用和使用`Widget`类在控制器或视图中间接调用。直接调用方式简单快捷,适合在视图层面直接展示小部件内容;而间接调用方式虽然提供了更大的灵活性,但需要注意不要过度复杂化控制器的职责。掌握这两种调用方式,可以帮助你更加灵活地在Yii2项目中运用小部件,提高开发效率和代码的可维护性。
下一篇:
7.1.1 调用widget()方法使用小部件DatePicker
该分类下的相关小册推荐:
Workerman高性能框架-GatewayWorker
PHP8入门与项目实战(5)
PHP高并发秒杀入门与实战
Swoole高性能框架-Hyperf
全面构建Magento2电商系统
Laravel(10.x)从入门到精通(十二)
Yii2框架从入门到精通(下)
Laravel(10.x)从入门到精通(十九)
经典设计模式PHP版
Laravel(10.x)从入门到精通(一)
Swoole入门教程
PHP8入门与项目实战(2)