如何截断特定Yii2 GridView列中的文本并在悬停时显示它?

时间:2017-04-26 09:22:32

标签: gridview twitter-bootstrap-3 yii2 hover truncate

我使用GridView小部件渲染表:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,   
    'columns' => [
        'subject',
        // ...
    ],
]) ?>

我需要截断&#34;主题&#34;中显示的文字。列并在悬停时完全显示,同时还保留过滤器行搜索功能。

我设法使用StringHelper :: TruncateWords()截断文本,但无法找出过滤器行和悬停部分:

[
            'attribute' => 'subject',
            'value' => function($model) {
                $ret = \yii\helpers\StringHelper::truncateWords($model->subject, 5, '...', false);
                return $ret;
            }
],

也许有一种方法可以在没有StringHelper的情况下使用纯Bootstrap执行此操作,但我无法使其工作...

1 个答案:

答案 0 :(得分:7)

实际上有更简单的解决方案。您可以使用纯CSS来执行此操作。

.truncate {
   max-width: 150px !important;
   overflow: hidden;
   white-space: nowrap;
   text-overflow: ellipsis;
}

.truncate:hover{
   overflow: visible;
   white-space: normal;
   width: auto;
}

在视图中只需添加类:

[
  'attribute' => 'subject',
  'contentOptions' => ['class' => 'truncate'],
],

根据您的需要调整最大宽度,通过css3添加其他效果,然后就完成了。