Yii框架小部件(Widgets)用法实例详解

2020-05-15 12:01:01王旭

Yii框架小部件(Widgets)用法。,具体如下:

小部件 ¶

小部件是在 视图 中使用的可重用单元, 使用面向对象方式创建复杂和可配置用户界面单元。 例如,日期选择器小部件可生成一个精致的允许用户选择日期的日期选择器, 你只需要在视图中插入如下代码:

<?php
use yiijuiDatePicker;
?>
<?= DatePicker::widget(['name' => 'date']) ?>

Yii提供许多优秀的小部件,比如active form, menu, jQuery UI widgets, Twitter Bootstrap widgets。 接下来介绍小部件的基本知识,如果你想了解某个小部件请参考对应的类API文档。

使用小部件

小部件基本上在views中使用, 在视图中可调用 yiibaseWidget::widget() 方法使用小部件。 该方法使用 配置 数组初始化小部件并返回小部件渲染后的结果。 例如如下代码插入一个日期选择器小部件,它配置为使用俄罗斯语, 输入框内容为$modelfrom_date属性值。

<?php
use yiijuiDatePicker;
?>
<?= DatePicker::widget([
  'model' => $model,
  'attribute' => 'from_date',
  'language' => 'ru',
  'dateFormat' => 'php:Y-m-d',
]) ?>

一些小部件可在yiibaseWidget::begin() 和 yiibaseWidget::end() 调用中使用数据内容。 例如如下代码使用yiiwidgetsActiveForm小部件生成一个登录表单, 小部件会在begin() 和0 end()执行处分别生成<form>的开始标签和结束标签, 中间的任何代码也会被渲染。

<?php
use yiiwidgetsActiveForm;
use yiihelpersHtml;
?>
 
<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
 
  <?= $form->field($model, 'username') ?>
 
  <?= $form->field($model, 'password')->passwordInput() ?>
 
  <div class="form-group">
    <?= Html::submitButton('Login') ?>
  </div>
 
<?php ActiveForm::end(); ?>

注意和调用 yiibaseWidget::widget() 返回渲染结果不同, 调用 yiibaseWidget::begin() 方法返回一个可组建小部件内容的小部件实例。

注意: 当调用 yiibaseWidget::end() 的时候,一些小部件将使用 输出缓冲 来调整封闭的内容。因此,当调用 yiibaseWidget::begin() 和 yiibaseWidget::end() 时,最好在同一个视图文件里。 不遵循这个规则可能会导致意外的输出。

配置全局默认值

小部件的全局默认值可以通过 DI 容器配置:

Yii::$container->set('yiiwidgetsLinkPager', ['maxButtonCount' => 5]);

详见 依赖注入容器 "实践中的应用" 一节 。

创建小部件

继承 yiibaseWidget 类并覆盖 yiibaseWidget::init() 和/或 yiibaseWidget::run() 方法可创建小部件。通常

相关文章 大家在看