Yii2: GridView 的列太宽

Yii2: GridView's column is too wide

我有 index.php 由创建 CRUD 的 Gii 工具制作。我也使用 AdminLTE 模板。

它有 GridView 应该显示两列:"Phrase" 和 "Author" 但列 "Phrase" 有一些行有长文本(大约 350 个字符)因此仅 显示了此列的一部分 。 "Author" 列根本没有显示。

没有水平滚动条(应该对我有帮助):

或者问题出在 string 数据类型:

public function rules()
{
    return [
        [['phrase'], 'required'],
        [['phrase'], 'string'],
        [['author'], 'string', 'max' => 50],
    ];
}

这是我的 index.php 视图:

<div class="box box-primary">
    <?php Pjax::begin(); ?>                
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            'phrase',
            'author',
        ],
    ]); ?>
    <?php Pjax::end(); ?>
</div>

试试这个:

[
    'attribute'=>'phrase',
    'value'=>function($data){
        return strlen($data->phrase) > 100 ? Html::encode(substr($data->phrase, 0, 100)) . ". . ." : $data->phrase;
    }
]

如果字符串大小大于 100,它将显示字符串的前 100 个字符。

根据您想要的宽度设置值。

我将 table-responsive class 添加到 <div class="box box-primary">

<div class="box box-primary table-responsive">
    <?php Pjax::begin(); ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            'frase',
            'autor',
            [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{update} {delete}'
            ],
        ],
    ]); ?>
    <?php Pjax::end(); ?>
</div>

您也可以使用 contentOptions :

[
   'attribute' => 'phrase',
   'contentOptions' => [
       'style' => [
           'max-width' => '600px',
           'white-space' => 'normal',
       ],
   ],
],