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