如何在GridView和ListView中删除或替换字符串(未设置)?
我知道的两种方式(现在):
格式化
将nullDisplay of Formatter设置为null以外的值.您可以在全局配置或单个GridView或DetailView中执行此操作.
全局(通常在config / web.PHP或< application> /config/main.PHP文件中):
'components' => [ ... 'formatter' => [ 'class' => 'yii\i18n\Formatter','nullDisplay' => '',],... ],
在某些GridView中(与DetailView相同):
<?= GridView::widget([ 'dataProvider' => $myProvider,'formatter' => ['class' => 'yii\i18n\Formatter','nullDisplay' => ''],'columns' => [ ... ],]); ?>
设置值
可能不是那么优雅在某个GridView中:
<?= GridView::widget([ 'dataProvider' => $myProvider,'columns' => [ ... [ 'attribute' => 'some_attribute','format' => 'raw','value' => function (ModelClass $model) { if ($model->some_attribute != null) { return $model->some_attribute; //or: return Html::encode($model->some_attribute) } else { return ''; } },... ],]); ?>
或在一定的DetailView中:
<?= DetailView::widget([ 'model' => $model,'attributes' => [ ... [ 'attribute' => 'some_attribute','value' => $model->some_attribute != null ? $model->some_attribute : '',//or: 'value' => $model->some_attribute != null ? Html::encode($model->some_attribute) : '',]) ?>
两个提示
如果同时使用多种方法:设置值(直接或通过函数)将覆盖Grid / DetailView的格式化程序配置,这反过来将覆盖全局格式化程序配置.
您还可以定义与空字符串不同的内容.例如.如果使用引导,您可能需要使用“< span class =”glyphicon glyphicon-question-sign“>< / span>‘获取缺少值的符号.