YII2.0之窗体小部件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()方法。

结果图

技术分享

技术分享

技术分享

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

本文出自 “PHP学习” 博客,请务必保留此出处http://xtceetg.blog.51cto.com/5086648/1898339

以上是关于YII2.0之窗体小部件的主要内容,如果未能解决你的问题,请参考以下文章

Android小部件,启动一个片段?

此应用小部件片段中所有意图 (PendingIntents) 的逻辑流

yii2.0 面包屑的使用

单击主屏幕小部件时如何打开特定片段

AppCompat v22.1.0 没有为片段正确主题化所有 xml 小部件

Qt之窗体布局(QFormLayout)