型号:
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}ModelSearch:
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}现在,如果我将fnGdiff添加到网格视图中,则始终存在一个数字(?!)默认情况下,在可以进行筛选的textfield中。它是0,-6,等等。它是一个特征,还是一个bug,还是我忘记了一些需要调整的东西?事先非常感谢!
解决办法:
型号:
public function getFnGdiff() {
return $this->FnG - $this->fd;
}ModelSearch:
public $fnGdiff;
public function rules() {
return [
[['fnGdiff'], 'safe'],
];
}
...(因此这个奇怪的数字消失了,但是不可能以这种方式过滤计算出来的虚拟属性,您必须从DB中选择这样的字段才能这样做)
发布于 2017-03-20 09:54:26
如果您添加fnGdiff t您的gridView ..。调用函数getFnGdiff()。默认情况下返回0。
could be You want show $FnGdiff注意函数和vars的命名约定。
'columns' => [
['class' => 'yii\grid\SerialColumn'],
.....
'FnGdiff', // $FnGdiff content
'fnGdiff', // function getFnGdiff() result 您应该将vars和函数的代码移动到searchModel中。
ModelSearch
public $FnGdiff;
public function getFnGdiff() {
return $this->FnG - $this->fd;
}并将此代码从模型中删除。
发布于 2017-03-20 10:28:14
Filter字段是搜索模型的呈现,它们的属性传递给GridView。创建该模型时,当模型为发送查询之前的初始值时,虚拟属性$FnGdiff由指定的值设置。属性$FnGdiff是聋设置0 ($this->FnG - $this->fd,在新模型中为: null = 0),该值在文本过滤器字段中呈现。因此,您应该只返回指定的值,没有新的记录。试试这个:
public function getFnGdiff() {
return $this->isNewRecord ? '' : $this->FnG - $this->fd;
}https://stackoverflow.com/questions/42899524
复制相似问题