Yii2:删除“删除”;(未设定)“;在GridView和DetailView中查找空值
如何删除或替换GridView和ListView中的字符串Yii2:删除“删除”;(未设定)“;在GridView和DetailView中查找空值,gridview,view,yii2,detailview,Gridview,View,Yii2,Detailview,如何删除或替换GridView和ListView中的字符串(未设置) 格式化程序 设置为null以外的其他值。您可以在全局配置中执行此操作,也可以在单个GridView或DetailView中执行此操作 全局(通常在config/web.php或/config/main.php文件中): “组件”=>[ ... “格式化程序”=>[ 'class'=>'yii\i18n\Formatter', “空显示”=>“”, ], ... ], 在某些GridView中(与DetailView相同):
(未设置)
格式化程序
设置为null以外的其他值。您可以在全局配置中执行此操作,也可以在单个GridView或DetailView中执行此操作
全局(通常在config/web.php
或/config/main.php
文件中):
“组件”=>[
...
“格式化程序”=>[
'class'=>'yii\i18n\Formatter',
“空显示”=>“”,
],
...
],
在某些GridView中(与DetailView相同):
设置值
可能没那么优雅。在某个GridView中:
或者在某个详细视图中:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
['label' => 'labelName', 'value' => function($data) {
if (!empty($data->tDeal->DealDate)) {
return $data->tDeal->DealDate;
} else { return ''; }
}],
],
])
?>
两个提示
如果同时使用多个方法:设置值(直接或按函数)将覆盖Grid/DetailView的格式化程序配置,而这反过来将覆盖全局格式化程序配置
您还可以定义与空字符串不同的内容。例如,如果使用引导,您可能希望使用\yii\bootstrap\Html::icon('question-sign')
(或'
)来获取缺少值的符号。
我不建议使用设置为空的显示方法。最好是检查您访问的变量是否为null
我愿意
//模型代码
公共函数getProjectName()
{
$project=$this->project;
返回($project)?$project->名称:“”;
}
//你的网格视图
在gridview配置中设置emptycell:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'emptyCell'=>'-',
'columns' => [
['class' => 'yii\grid\SerialColumn'],
.........
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
对于
kartik\grid\GridView
'class' => 'kartik\grid\EditableColumn',
'attribute'=>'myAttribute',
'header' => 'myHeader',
'editableOptions' => [
'inputType' => \kartik\editable\Editable::INPUT_TEXT,
'valueIfNull' => '-',
/**
* @var string the value to be displayed. If not set, this will default to the attribute value. If the attribute
* value is null, then this will display the value as set in [[valueIfNull]].
*/
public $displayValue;
使用以下命令:
use Yii;
...
Yii::$app->formatter->nullDisplay = 'N\A';
对于DetailView和GridView,我在列中使用if-else 详细视图:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
['label' => 'labelName', 'value' => function($data) {
if (!empty($data->tDeal->DealDate)) {
return $data->tDeal->DealDate;
} else { return ''; }
}],
],
])
?>
GridView:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['label' => 'labelName', 'value' => function($data) {
if (!empty($data->tDeal->DealDate)) {
return $data->tDeal->DealDate;
} else { return ''; }
}],
],
])
?>
为什么将每个项都检查为null要比将formatter设置为null好。这是不对的。正如文档所述,emptyCell将显示什么时候没有返回任何内容。