YII2.0之窗体小部件

在工作中用到YII2框架,之前对Yii的Widgets这个不太理解,也就没有用上。最近在查看YII2的英文指南的时候,终于弄明白了是怎么一回事。

举个简单的例子,如果在做后台开发的时候,大部分页面都需要用到一个可选择的列表(<select>),那么我们可以把它做成窗体小部件。

具体看下面代码:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/2/14
 * Time: 18:01
 */

namespace common\widgets;

use common\service\GameService;
use yii\base\Widget;
use yii\helpers\ArrayHelper;

class GameWidget extends Widget
{

    private $list;

    private $html;

    public function init()
    {
        parent::init();
        $this->list = GameService::gameList([‘id‘, ‘gamename‘]);
        $array = ArrayHelper::toArray($this->list);
        $this->html = ‘<select data-am-selected="{btnSize: "sm"}">‘;
        foreach ($array as $key => $val) {
            $this->html .=‘<option value="‘.$val[‘id‘].‘">‘.$val[‘gamename‘].‘</option>‘;
        }
        $this->html.=‘</select>‘;
    }

    public function run()
    {
        return $this->html;
    }
}

新建一个类,并且继承自yii\base\Widget。覆盖init()和run()方法。init里面写自己的逻辑,run里面返回需要在页面上显示的内容。

下面在看php模板页面上的调用方法

<?php
use common\widgets\GameWidget;
?>
<?php echo GameWidget::widget()?>

引入自己编写的Widget,然后调用widget()方法。

结果图

这里以后在其它页面如果还需要这个部件,只接调用就可以了。不需要写多的代码。

时间: 2024-12-25 06:30:17

YII2.0之窗体小部件的相关文章

Yii2 menu navbar nav小部件的使用示例

menu Menu::widget( [ [ 'label' => $menu['name'], 'url' => [$menu['route']], 'items' => [ [ 'label' => $menu['name'], 'url' => [$menu['route']] ], .... ] ], [ 'label' => $menu['name'], 'url' => [$menu['route']], 'items' => [ [ 'labe

Android 手机卫士14--Widget窗口小部件AppWidgetProvider

1.AndroidManifest.xml根据窗体小部件广播接受者关键字android.appwidget.action.APPWIDGET_UPDATE 搜索android:resource="@xml/process_widget_provider" 2.找到xml文件夹下process_widget_provider.xml <appwidget-provider android:minWidth="294.0dip" android:minHeight

yii2.0 面包屑的使用

yii2中面包屑是yii2自带的小部件,类似本网站的导航栏应该就是采用面包屑来完成的 例子如下,需要引入 yii\widgets\Breadcrumbs echo Breadcrumbs::widget([    'homeLink' => ['label' => '首页', 'url' => ['site/index']],    'itemTemplate' => " {link} \n", //全局模板  运用到每个link    'links' =>

Yii2.0框架 小部件 DetailView

1.数据小部件 Yii 提供了一套数据小部件 widgets,这些小部件可以用于展示数据 DetailView 小部件用于显示一条记录数据. ListView 和 GirdView 小部件能够用于显示一个拥有分页.排序和过滤功能的一个列表或者表格. 2. DetailView 用来显示一条记录的详情,下面这些都是一条记录的情况: 一个Model模型类对象的数据. ActiveRecord类的一个实例对象. 由键值对构成的一个关联数组. 3.DetailView的创建 调用DetailView::

Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用alert.confirm和dialog的小部件封装,当然了,本质上还是bootstrap3-dialog,可以用原生的方法,原生方法的用法点这里,而bootstrap3-dialog又是基于bootstrap3的modals做的封装.嗯,基本关系就是这样.在搜索这个相关知识时,经常会看到有人提到b

Yii2 DetailView小部件

DetailView小部件 Yii 提供了一套数据库小部件 widgets,这些小部件可以用于显示数据 DetailView 小部件用于显示一条记录数据 ListView 和 GridView 可以用于显示一个拥有分页.排序和过滤功能的列表或者表格 2.DetailView 用来显示一条记录的详情,以下为一条记录的情况: 一个Model模型类对象的数据 ActiveRecord 类的一个实例对象 由键值对构成的一个关联数组 <?= DetailView::widget([ // 调用 Detai

YII2 小部件(widgets)

小部件基本上在views中使用,在视图中可调用 yii\base\Widget::widget() 方法使用小部件. 该方法使用 配置 数组初始化小部件并返回小部件渲染后的结果. 例如如下代码插入一个日期选择器小部件,它配置为使用俄罗斯语, 输入框内容为$model的from_date属性值. <?php use yii\jui\DatePicker; ?> <?= DatePicker::widget([ 'model' => $model, 'attribute' =>

yii2之GridView小部件

GridView小部件用于展示多条数据的列表.GridView小部件的使用需要数据提供器即yii\data\ActiveDataProvider的实例作为参数,所以 第一步就是要在控制器方法中创建这个实例然后传给视图,下面以我做的一个demo为例子进行讲解. 控制器LifeController代码: //生活记录列表 public function actionIndex() { $searchModel = new Life(['scenario' => Life::SCENARIO_SEAR

Yii框架2.0的小部件

小部件是视图里的可重用单元. 小部件是在视图中使用的,但是可能需要使用控制器传给他的模型,比如在渲染表单的时候.比如一般的时间拾取器就可以直接砸视图里加入如下代码就可以: <?php use yii\jui\DatePicker; ?> <?= DatePicker::widget(['name' => 'date']) ?> 如果用到model 就大致是这样的: <?php use yii\jui\DatePicker; ?> <?= DatePicker