Yii2 gridview filter 虚拟属性 textfield 默认显示数字
Yii2 gridview filter virtual attribute textfield showing a number by default
型号:
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
模型搜索:
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}
现在,如果我将 fnGdiff
添加到 gridview,默认情况下总是有 一个数字 (?!) 在我们可以进行过滤的文本字段中。它是零、-6 等。它是一个特性,还是一个错误,还是我忘记了要调整的东西?非常感谢!
解决方案:
型号:
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
模型搜索:
public $fnGdiff;
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}
...
(所以这个奇怪的数字就消失了,但是不可能通过这种方式过滤计算出的虚拟属性,你必须从数据库中select这样的字段才能这样做)
如果你添加 fnGdiff
t 你的 gridView .. 你调用函数 getFnGdiff() .. 默认情况下似乎 return 0 ..
could be You want show $FnGdiff
注意函数和变量的命名约定
'columns' => [
['class' => 'yii\grid\SerialColumn'],
.....
'FnGdiff', // $FnGdiff content
'fnGdiff', // function getFnGdiff() result
并且您应该将变量和函数的代码移动到 searchModel
模型搜索
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
并从模型中删除此代码..
过滤器字段是为搜索模型呈现的,它们的属性传递给 GridView。当您创建该模型时,虚拟属性 $FnGdiff 在发送查询之前模型初始时由指定值设置。您的属性 $FnGdiff 默认设置为 0 ($this->FnG - $this->fd,在新模型中它是:null - null = 0),并且该值在文本过滤器字段中呈现。所以你应该 return 只为没有新记录指定值。试试这个:
public function getFnGdiff() {
return $this->isNewRecord ? '' : $this->FnG - $this->fd;
}
型号:
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
模型搜索:
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}
现在,如果我将 fnGdiff
添加到 gridview,默认情况下总是有 一个数字 (?!) 在我们可以进行过滤的文本字段中。它是零、-6 等。它是一个特性,还是一个错误,还是我忘记了要调整的东西?非常感谢!
解决方案:
型号:
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
模型搜索:
public $fnGdiff;
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}
...
(所以这个奇怪的数字就消失了,但是不可能通过这种方式过滤计算出的虚拟属性,你必须从数据库中select这样的字段才能这样做)
如果你添加 fnGdiff
t 你的 gridView .. 你调用函数 getFnGdiff() .. 默认情况下似乎 return 0 ..
could be You want show $FnGdiff
注意函数和变量的命名约定
'columns' => [
['class' => 'yii\grid\SerialColumn'],
.....
'FnGdiff', // $FnGdiff content
'fnGdiff', // function getFnGdiff() result
并且您应该将变量和函数的代码移动到 searchModel
模型搜索
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}
并从模型中删除此代码..
过滤器字段是为搜索模型呈现的,它们的属性传递给 GridView。当您创建该模型时,虚拟属性 $FnGdiff 在发送查询之前模型初始时由指定值设置。您的属性 $FnGdiff 默认设置为 0 ($this->FnG - $this->fd,在新模型中它是:null - null = 0),并且该值在文本过滤器字段中呈现。所以你应该 return 只为没有新记录指定值。试试这个:
public function getFnGdiff() {
return $this->isNewRecord ? '' : $this->FnG - $this->fd;
}