rob*_*sch 21 gridview view detailview yii2
如何(not set)在GridView和ListView中删除或替换字符串?
rob*_*sch 57
我知道的两种方式(现在):
格式化
将Formatter的nullDisplay设置为 null以外的值.您可以在全局配置或单个GridView或DetailView中执行此操作.
全球(通常在文件中config/web.php或<application>/config/main.php文件中):
'components' => [
...
'formatter' => [
'class' => 'yii\i18n\Formatter',
'nullDisplay' => '',
],
...
],
Run Code Online (Sandbox Code Playgroud)
在某些GridView中(与DetailView相同):
<?= GridView::widget([
'dataProvider' => $myProvider,
'formatter' => ['class' => 'yii\i18n\Formatter','nullDisplay' => ''],
'columns' => [
...
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
设置值
可能不那么优雅.在某个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 '';
}
},
],
...
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
或者在某个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) : '',
],
...
],
]) ?>
Run Code Online (Sandbox Code Playgroud)
两个提示
如果同时使用多种方法:设置值(直接或通过函数)会覆盖Grid/DetailView的格式化程序配置,这反过来会覆盖全局格式化程序配置.
您还可以定义与空字符串不同的内容.例如,如果使用bootstrap,您可能希望使用\yii\bootstrap\Html::icon('question-sign')(或'<span class="glyphicon glyphicon-question-sign"></span>')获取缺失值的符号.
小智 8
用这个:
use Yii;
...
Yii::$app->formatter->nullDisplay = 'N\A';
Run Code Online (Sandbox Code Playgroud)