2016-01-14 195 views
0

我想創建一個名爲'IssueList'的自定義小部件,它將擴展'ListView'。使用自定義itemView在自定義小部件中放置小部件yii2

<?php 
namespace frontend\components; 

use yii\base\Widget; 
use yii\widgets\ListView; 

class IssueList extends Widget{ 
public $dataProvider; 


public function init(){ 
    parent::init(); 
} 
public function run(){ 
    return ListView::widget([ 
     'dataProvider' => $this->dataProvider, 
     'itemOptions' => [ 
      'class' => 'item issue-item' 
     ], 
     'options' => [ 
      'class' => 'issue_list' 
     ], 
     'itemView' => '_issueListView', 
     'layout' => '{items}{pager}', 
    ]); 

} 

}?> 

但是,ListView有一個自定義itemView。當渲染插件我得到這個錯誤

視圖文件不存在:

/var/www/clients/client1/web1/frontend/views/comments/_issueListView.php

它顯然期待在錯誤的目錄中,我該如何改變它?

回答

1

itemView傳遞給yii\base\View render()負責渲染視圖。因此,您可以根據需要更改視圖路徑,使用別名:

呈現視圖。

要呈現可以以下列 格式之一指定的視圖:

  • 路徑別名(例如「@應用/視圖/站點/索引」);應用(例如「//網站/索引」)內
  • 絕對路徑:視圖名以雙斜線。實際的視圖文件將在應用程序的視圖路徑下查找 。
  • 當前模塊中的絕對路徑(例如「/ site/index」):視圖名稱以單斜槓開始。實際視圖文件將在當前模塊的視圖路徑下查找 。
  • 相對視圖(例如「索引」):視圖名稱不以@或/開頭。將在視圖$上下文的視圖路徑 下查找相應的視圖文件。如果未給出$ context,則將在包含當前正在呈現的視圖 的目錄下查找 (即,當在另一視圖內呈現視圖時發生這種情況)。

如果你希望它是更動態的,你可以通過關閉到itemView具有以下簽名:

function ($model, $key, $index, $widget) { 
    ... 
} 

itemViewhere文檔。

除了API文檔,渲染視圖和指定路徑在官方文檔Views (Rendering Views)部分中進行了描述。