- Yii 教程
- Yii - 主页
- Yii - 概述
- Yii - 安装
- Yii - 创建页面
- Yii - 应用程序结构
- Yii - 入口脚本
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用动作
- Yii - 模型
- Yii - 小部件
- Yii - 模块
- Yii - 视图
- Yii - 布局
- Yii - 资产
- Yii - 资产转换
- Yii - 扩展
- Yii - 创建扩展
- Yii - HTTP 请求
- Yii - 响应
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 规则
- Yii - HTML 表单
- Yii - 验证
- Yii - 临时验证
- Yii - AJAX 验证
- Yii - 会话
- Yii - 使用闪存数据
- Yii - cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - 列表视图小部件
- Yii - GridView 小部件
- Yii - 活动
- Yii - 创建事件
- Yii - Behave
- Yii - 创建Behave
- Yii - 配置
- Yii - 依赖注入
- Yii - 数据库访问
- Yii - 数据访问对象
- Yii - 查询生成器
- Yii - 活动记录
- Yii - 数据库迁移
- Yii - 主题化
- Yii - RESTful API
- Yii - RESTful API 的实际应用
- Yii - 字段
- Yii - 测试
- Yii - 缓存
- Yii - 片段缓存
- Yii - 别名
- Yii - 日志记录
- Yii - 错误处理
- Yii - 身份验证
- Yii - 授权
- Yii - 本地化
- Yii-Gii
- Gii – 创建模型
- Gii – 生成控制器
- Gii – 生成模块
- Yii 有用的资源
- Yii - 快速指南
- Yii - 有用的资源
- Yii - 讨论
Yii - 小部件
小部件是可重用的客户端代码,其中包含 HTML、CSS 和 JS。该代码包含最少的逻辑,并包装在yii\base\Widget对象中。我们可以轻松地在任何视图中插入并应用该对象。
步骤 1 - 要查看正在运行的小部件,请使用以下代码在SiteController中创建一个actionTestWidget函数。
public function actionTestWidget() { return $this->render('testwidget'); }
在上面的例子中,我们只是返回了一个名为“testwidget”的视图。
步骤2 - 现在,在views/site文件夹中,创建一个名为testwidget.php的视图文件。
<?php use yii\bootstrap\Progress; ?> <?= Progress::widget(['percent' => 60, 'label' => 'Progress 60%']) ?>
步骤 3 - 如果您访问http://localhost:8080/index.php?r=site/test-widget,您将看到进度条小部件。
使用小部件
要在View中使用小部件,您应该调用yii\base\Widget::widget()函数。该函数采用一个配置数组来初始化小部件。在前面的示例中,我们插入了一个进度条,其中包含配置对象的百分比和标记参数。
有些小部件会占用一块内容。它应该包含在yii\base\Widget::begin()和 yii\base\Widget::end()函数之间。例如,以下小部件显示联系表单 -
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?> <?= $form->field($model, 'name') ?> <?= $form->field($model, 'email') ?> <?= $form->field($model, 'subject') ?> <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?> <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'template' => '<div class="row"> <div class = "col-lg-3">{image}</div> <div class = "col-lg-6">{input}</div> </div>', ]) ?> <div class = "form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?> </div> <?php ActiveForm::end(); ?>
创建小部件
要创建小部件,您应该从yii\base\Widget扩展。然后你应该重写yii\base\Widget::init()和yii\base\Widget::run()函数。run ()函数应该返回渲染结果。init ()函数应该规范小部件属性。
步骤 1 - 在项目根目录中创建一个组件文件夹。在该文件夹中,使用以下代码创建一个名为FirstWidget.php的文件。
<?php namespace app\components; use yii\base\Widget; class FirstWidget extends Widget { public $mes; public function init() { parent::init(); if ($this->mes === null) { $this->mes = 'First Widget'; } } public function run() { return "<h1>$this->mes</h1>"; } } ?>
步骤 2 -按以下方式修改testwidget视图。
<?php use app\components\FirstWidget; ?> <?= FirstWidget∷widget() ?>
步骤 3 - 转到http://localhost:8080/index.php?r=site/test-widget。您将看到以下内容。
步骤 4 - 要包含begin()和end()调用之间的内容,您应该修改FirstWidget.php文件。
<?php namespace app\components; use yii\base\Widget; class FirstWidget extends Widget { public function init() { parent::init(); ob_start(); } public function run() { $content = ob_get_clean(); return "<h1>$content</h1>"; } } ?>
步骤 5 - 现在 h1 标签将包围所有内容。请注意,我们使用ob_start()函数来缓冲输出。修改 testwidget 视图,如以下代码所示。
<?php use app\components\FirstWidget; ?> <?php FirstWidget::begin(); ?> First Widget in H1 <?php FirstWidget::end(); ?>
您将看到以下输出 -
要点
小部件应该 -
按照 MVC 模式创建。您应该将表示层保留在视图中,并将逻辑保留在小部件类中。
设计为独立的。最终开发人员应该能够将其设计成视图。