> widget是可重復使用的客戶端代碼,它包含HTML,CSS 和 JS。此代碼包含最少邏輯并被包裝在一個 yii\base\Widget 對象。我們可以很容易地此對象插入到在任意視圖中應用。
要創建一個窗口小部件,應該擴展類 yii\base\Widget。那么需要重寫 yii\base\Widget::init() 和 yii\base\Widget::run() 函數。run()函數將返回渲染的結果。 init()函數將標準化小部件的屬性。
[TOC]
#### 第1步:在 components 文件夾內,創建一個名為 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 = '第一個Widget';
}
}
public function run() {
return "<h1>$this->mes</h1>";
}
}
?>
~~~
#### 第2步: 按以下列方式修改 views/site/testwidget.php 視圖
~~~
<?php
use app\components\FirstWidget;
?>
<?= FirstWidget∷widget() ?>
~~~
#### 第3步 - 訪問URL=> http://localhost:8080/index.php?r=site/test-widget ,將會看到以下內容輸出。

#### 第4步- 要在 begin() 和 end() 函數之間調用顯示內容,您應該修改 FirstWidget 文件。
~~~
<?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()函數來緩沖輸出。修改 views/site/testwidget.php 視圖使用如下面給出的代碼。
~~~
<?php
use app\components\FirstWidget;
?>
<?php FirstWidget::begin(); ?>
第一個Widget在H1標簽中
<?php FirstWidget::end(); ?>
~~~
將會看到下面的輸出 -

## 要點
> 窗口小部件應該 -
> * 要在MVC模式下創建。應該保持表現層在視圖,邏輯在窗口小部件(widget)類。
> * 設計成自包含的。最終開發人員應該能夠將它設計到一個視圖。
- 基礎教程
- 入門安裝
- Yii2 composer 安裝慢解決
- Cookies
- 數據庫操作
- 數據提供者
- 助手類
- 驗證規則
- GridView
- DetailView
- YII2分頁
- JS、CSS的引用
- Excel導出
- 中文轉拼音
- 發送郵件
- 第三方插件
- Session跨域共享
- Url跨域訪問
- 場景應用
- 查詢條件鏈
- Session分布式共享
- Redis的使用
- mongodb
- 高級教程
- 自定義gii模板
- 角色權限管理(RBAC)
- user組件的配置
- 國際化(I18N)
- 小部件(Widget)
- 模塊(Module)
- 行為(Behavior)
- 緩存(Cache)
- migrate 數據庫遷移
- phpstorm
- 快捷鍵
- 自定義
- 其它插件