Yii小部件(Widget)

widget是可重複使用的客戶端代碼,它包含HTML,CSS 和 JS。此代碼包含最少邏輯並被包裝在一個 yii\base\Widget 對象。我們可以很容易地此對象插入到在任意視圖中應用。

第1步- 要在動作中查看小部件,我們在 SiteController 創建 actionTestWidget 函數並用下面的代碼。

public function actionTestWidget() {
return $this->render('testwidget');
}

在上面的例子中,我們只是返回了一個名爲 「testwidget」 的視圖。

第2步 - 現在,在 views/site 文件夾中,創建一個名爲 testwidget.php 的視圖文件。


60, 'label' => 'Progress 60%'\]) ?>

第3步 - 如果在瀏覽器中打開URL=>  http://localhost:8080/index.php?r=site/test-widget ,就會看到進度條部件如下所示。
Yii小部件(Widget)

使用Widgets

要在視圖中使用一個小部件,您應該調用 yii\base\Widget::widget() 函數。 這個函數使用的配置數組來初始化窗口小部件。在前面的例子中,我們用插入百分比進度條和配置對象標記參數。

一些小部件需要內容塊,應該封閉在yii\base\Widget::begin() 和 yii\base\Widget::end()函數之間。 例如,下面的 widget 顯示一個聯繫的表單 -

'contact-form'\]); ?>


field($model, 'name') ?>
field($model, 'email') ?>
field($model, 'subject') ?>
field($model, 'body')->textArea(\['rows' => 6\]) ?>
field($model, 'verifyCode')->widget(Captcha::className(), \[ 'template' => '

{image}
{input}
', \]) ?>

'btn btn-primary', 'name' => 'contact-button'\]) ?>

創建Widgets

要創建一個窗口小部件,應該擴展類 yii\base\Widget。那麼需要重寫 yii\base\Widget::init() 和 yii\base\Widget::run() 函數。run()函數將返回渲染的結果。 init()函數將標準化小部件的屬性。

init()函數將標準化小部件的屬性。 在 components 文件夾內,創建一個名爲 FirstWidget.php 文件,並使用下面的代碼。

mes === null) { $this->mes = '第一個Widget'; } } public function run() { return "

$this->mes

"; } } ?>

步驟2- 按以下列方式修改 views/site/testwidget.php 視圖。


第3步 - 訪問URL=>  http://localhost:8080/index.php?r=site/test-widget ,將會看到以下內容輸出。
Yii小部件(Widget)

第4步- 要在 begin() 和 end() 函數之間調用顯示內容,您應該修改 FirstWidget 文件。

$content"; } } ?>

 

第5步 - 現在H1標籤將環繞的所有內容。請注意,我們使用 ob_start()函數來緩衝輸出。修改  views/site/testwidget.php 視圖使用如下面給出的代碼。

第一個Widget在H1標籤中

將會看到下面的輸出 -
Yii小部件(Widget)

要點


窗口小部件應該 -

  • 要在MVC模式下創建。應該保持表現層在視圖,邏輯在窗口小部件(widget)類。

  • 設計成自包含的。最終開發人員應該能夠將它設計到一個視圖。