Yii2:在GridView中删除“(未设置)”,对于空值删除DetailView

如何在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>‘获取缺少值的符号.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...