2016-01-14 167 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)部分中进行了描述。