【问题标题】:Customise grid view in yii2在 yii2 中自定义网格视图
【发布时间】:2014-03-07 15:56:15
【问题描述】:

如何在 Yii2 中删除特定网格视图的摘要和排序器。在 Yii1.1 中,我们可以通过设置模板属性来做到这一点。在yii2中如何实现呢?

【问题讨论】:

    标签: php gridview yii2 cgridview


    【解决方案1】:

    要仅更改summary 选项,您可以使用:

    'summary' => "{begin} - {end} {count} {totalCount} {page} {pageCount}",
    

    然后,如果你想清空summary 设置为空字符串值,如:

    'summary'=> "",
    

    并更改您可以使用的布局:

    'layout'=> "{summary}\n{items}\n{pager}"
    

    然后,如果你想清空layouts 设置布局为空字符串值,如:

    'layout'=> "",
    

    Ref link

    Ref link

    因此,对于示例,我认为下面的示例代码可以帮助您了解如何在 Yii 2 中更改和自定义 GridView 表:

                    <?= \yii\grid\GridView::widget([
                    'id' => 'table',
                    'dataProvider' => $dataProvider,
                    'layout'=>"{sorter}\n{pager}\n{summary}\n{items}",
                    'summary' => "Showing {begin} - {end} of {totalCount} items",
                    'tableOptions' => ['class' => 'table  table-bordered table-hover'],
                    'rowOptions' => function ($model, $key, $index, $grid) {
                        return [
                            'style' => "cursor: pointer",
                            'onclick' => 'location.href="'
                                . Yii::$app->urlManager->createUrl('test/index')
                                . '?id="+(this.id);',
                        ];
                    },
                    'columns' => [
                        [
                            'class' => 'yii\grid\SerialColumn',
                            'contentOptions' => ['style' => 'width: 20px;', 'class' => 'text-center'],
                        ],
                        [
                            'class' => 'yii\grid\DataColumn',
                            'attribute' => 'date',
                            'headerOptions' => ['class' => 'text-center'],
                            'label' => 'Date',
                            'contentOptions' => ['style' => 'width: 130px;', 'class' => 'text-center'],
                        ],
                            'template' => '{view}',
                            'buttons' => [
                                'view' => function ($url, $model) {
                                    return \yii\helpers\Html::a('<div class="text-center"><em data-toggle="tooltip"
                                                                data-placement="top" title="more detail"
                                                                class="fa fa-external-link-square text-warning"></em></div>',
                                        (new yii\grid\ActionColumn())->createUrl('test/index', $model, $model['id'], 1), [
                                            'title' => Yii::t('yii', 'view'),
                                            'data-method' => 'post',
                                            'data-pjax' => '0',
                                        ]);
                                },
                            ]
                        ],
                    ],
                ]); ?>
    

    【讨论】:

    • 错误 - 未定义的变量:计数。 $dataProvider->count 为我解决了这个问题。
    • 'count' 来自传递视图渲染的控制器,您可以删除 'count' 变量。
    【解决方案2】:

    知道了,通过设置layout属性就可以实现了。

    'layout'=>"{summary}\n{items}\n{pager}"
    

    【讨论】:

      【解决方案3】:

      如果您只想要网格项目,请使用'layout'=&gt;"{items}"

      如果您只想要摘要,请使用 'layout'=&gt;"{summary}"

      如果您只想要分拣机,请使用'layout'=&gt;"{pager}"

      【讨论】:

        【解决方案4】:

        设置参数summaryText为空字符串:

        array(
            'summaryText' => '',
            'dataProvider' => $model->search(),
        ...
        

        【讨论】:

        • 这给了我一个未知的属性异常!它的yii2! :-)
        【解决方案5】:
        [
            'class' => 'yii\grid\ActionColumn',
            'buttons' =>
                [
                    'update'=>function($url,$model,$key)
                    {
                        return Html::a( "update" , $url ); //use Url::to() in order to change $url
                    },
                    'view'=>function($url,$model,$key)
                    {
                        return Html::a( "update" , $url ); //use Url::to() in order to change $url
                    },
                    'delete'=>function($url,$model,$key)
                    {
                        return Html::a( "update" , $url, [
                            'class' => 'btn btn-lg btn-primary',
                            'data' => [
                                'method' => 'post',
                                'params' => ['derp' => 'herp'], // <- extra level
                            ],
                        ] ); //use Url::to() in order to change $url
                    }
                ],
            'template' => '<div class="column-buttons">
                                                <span>{update}</span>
                                                <span>{view}</span>
                                                <span>{delete}</span>
                                            </div>',
            'header' => 'Actions'
        ]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-03
          • 1970-01-01
          • 1970-01-01
          • 2021-03-04
          • 1970-01-01
          相关资源
          最近更新 更多