ListView

             

yii\widgets\ListView 小部件用于显示数据提供者 data provider 提供的数据。 每个数据模型用指定的视图文件 yii\widgets\ListView::$itemView 来渲染。 因为它提供开箱即用式的(译者注:封装好的)分页、排序以及过滤这样一些特性,所以它可以很方便地为最终用户显示信息并同时创建数据管理界面。

一个典型的用法如下例所示:

<code class="language-php hljs"><span class="hljs-keyword">use</span> <span class="hljs-title">yii</span>\<span class="hljs-title">widgets</span>\<span class="hljs-title">ListView</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">yii</span>\<span class="hljs-title">data</span>\<span class="hljs-title">ActiveDataProvider</span>;

<span class="hljs-variable">$dataProvider</span> = <span class="hljs-keyword">new</span> ActiveDataProvider([
    <span class="hljs-string">'query'</span> => Post::find(),
    <span class="hljs-string">'pagination'</span> => [
        <span class="hljs-string">'pageSize'</span> => <span class="hljs-number">20</span>,
    ],
]);
<span class="hljs-keyword">echo</span> ListView::widget([
    <span class="hljs-string">'dataProvider'</span> => <span class="hljs-variable">$dataProvider</span>,
    <span class="hljs-string">'itemView'</span> => <span class="hljs-string">'_post'</span>,
]);
</code>

_post 视图文件可包含如下代码:

<code class="language-php hljs"><span class="hljs-preprocessor"><?php</span>
<span class="hljs-keyword">use</span> <span class="hljs-title">yii</span>\<span class="hljs-title">helpers</span>\<span class="hljs-title">Html</span>;
<span class="hljs-keyword">use</span> <span class="hljs-title">yii</span>\<span class="hljs-title">helpers</span>\<span class="hljs-title">HtmlPurifier</span>;
<span class="hljs-preprocessor">?></span>
<div <span class="hljs-class"><span class="hljs-keyword">class</span>="<span class="hljs-title">post</span>">
    <<span class="hljs-title">h2</span>><?= <span class="hljs-title">Html</span>::<span class="hljs-title">encode</span>($<span class="hljs-title">model</span>-><span class="hljs-title">title</span>) ?></<span class="hljs-title">h2</span>>
    
    <?= <span class="hljs-title">HtmlPurifier</span>::<span class="hljs-title">process</span>($<span class="hljs-title">model</span>-><span class="hljs-title">text</span>) ?>    
</<span class="hljs-title">div</span>>
</span></code>

在上面的视图文件中,当前的数据模型 $model 是可用的。另外,下面的这些变量也是可用的:</p><ul><li><code>$key:混合类型,键的值与数据项相关联。

  • $index:整型,是由数据提供者返回的数组中以0起始的数据项的索引。
  • $widget:类型是ListView,是小部件的实例。
  • 假如你需要传递附加数据到每一个视图中,你可以像下面这样用 yii\widgets\ListView::$viewParams 属性传递键值对:

    <code class="language-php hljs"><span class="hljs-keyword">echo</span> ListView::widget([
        <span class="hljs-string">'dataProvider'</span> => <span class="hljs-variable">$dataProvider</span>,
        <span class="hljs-string">'itemView'</span> => <span class="hljs-string">'_post'</span>,
        <span class="hljs-string">'viewParams'</span> => [
            <span class="hljs-string">'fullView'</span> => <span class="hljs-keyword">true</span>,
            <span class="hljs-string">'context'</span> => <span class="hljs-string">'main-page'</span>,
            <span class="hljs-comment">// ...</span>
        ],
    ]);
    </code>

    在视图中,上述这些附加数据也是可以作为变量来使用的。



    发表评论 请登录再评论
    • 文章分类
    回到顶部