2017-09-28 8 views
0

J'ai index.php faite par l'outil Gii qui a créé un CRUD. J'utilise également le modèle AdminLTE.Yii2: La colonne de GridView est trop large

Il a le GridView qui devrait afficher deux colonnes: « Phrase » et « Auteur », mais la colonne « Phrase » a des lignes avec texte long (environ 350 caractères) si juste une partie de cette colonne est montré. Et la colonne "Auteur" n'est pas affichée du tout.

Il n'y a pas de barre de défilement horizontale (il devrait me aider):

enter image description here

Ou peut-être le problème est la chaîne type de données:

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

Ceci est mon index.php voir:

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

Répondre

1

j'ai ajouté la classe table-responsive à <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> 
0

Essayez ceci:

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

Il affiche les 100 premiers caractères de la chaîne, si la taille de la chaîne est supérieure à 100.

Réglez la valeur en fonction de votre largeur désirée.

+1

OP ne veux pas couper les chaînes. – Yupik

+0

utilise la fonction wordwrap de php wordwrap ($ data-> phrase, 8, "\ n", true); –

+1

Encore une fois, OP ne veut pas couper la chaîne. – Yupik

2

Vous pouvez également utiliser contentOptions:

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