我想创建一个名为"IssueList"的自定义小部件,它将扩展"ListView"。
<?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}',
]);
}
}?>
但是,列表视图具有自定义项视图。渲染小部件时出现此错误
视图文件不存在:
/var/www/clients/client1/web1/frontend/views/comments/_issueListView.php
它显然在错误的目录中查找,我该如何更改它?
itemView
被传递给yii''base''View render(),它负责渲染视图。因此,您可以根据需要更改视图路径,如果需要,可以使用别名:
呈现视图。
可以在以下选项之一中指定要呈现的视图 格式:
- 路径别名(例如"@app/视图/站点/索引");
- 应用程序中的绝对路径(例如"//site/index"):视图名称以双斜杠开头。将查看实际的视图文件 在应用程序的视图路径下。
- 当前模块中的绝对路径(例如"/site/index"):视图名称以单个斜杠开头。将查看实际的视图文件 在当前模块的视图路径下。
- 相对视图(例如"索引"):视图名称不以 @ 或/开头。将在视图路径下查找相应的视图文件 的视图$context。如果没有给出$context,将寻找 在包含当前正在呈现的视图的目录下 (即,在另一个视图中渲染一个视图时会发生这种情况)。
如果您希望它更加动态,可以使用以下签名将闭包传递给itemView
:
function ($model, $key, $index, $widget) {
...
}
请参阅此处itemView
文档。
除了 API 文档之外,渲染视图和指定路径在视图(渲染视图)部分的官方文档中进行了描述。