首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2网格视图筛选器虚拟属性textfield默认显示一个数字

Yii2网格视图筛选器虚拟属性textfield默认显示一个数字
EN

Stack Overflow用户
提问于 2017-03-20 09:08:45
回答 2查看 700关注 0票数 0

型号:

代码语言:javascript
复制
public $FnGdiff;

public function getFnGdiff() {
    return $this->FnG - $this->fd;
}

ModelSearch:

代码语言:javascript
复制
public function rules() {
    return [
        [['fnGdiff'], 'safe'],
    ];
}

现在,如果我将fnGdiff添加到网格视图中,则始终存在一个数字(?!)默认情况下,在可以进行筛选的textfield中。它是0,-6,等等。它是一个特征,还是一个bug,还是我忘记了一些需要调整的东西?事先非常感谢!

解决办法:

型号:

代码语言:javascript
复制
public function getFnGdiff() {
    return $this->FnG - $this->fd;
}

ModelSearch:

代码语言:javascript
复制
public $fnGdiff;

public function rules() {
    return [
        [['fnGdiff'], 'safe'],
    ];
}
...

(因此这个奇怪的数字消失了,但是不可能以这种方式过滤计算出来的虚拟属性,您必须从DB中选择这样的字段才能这样做)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 09:54:26

如果您添加fnGdiff t您的gridView ..。调用函数getFnGdiff()。默认情况下返回0。

代码语言:javascript
复制
 could be You want show  $FnGdiff

注意函数和vars的命名约定。

代码语言:javascript
复制
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        .....
        'FnGdiff',   // $FnGdiff content
        'fnGdiff',  // function getFnGdiff() result 

您应该将vars和函数的代码移动到searchModel中。

ModelSearch

代码语言:javascript
复制
 public $FnGdiff;

 public function getFnGdiff() {
   return $this->FnG - $this->fd;
}

并将此代码从模型中删除。

票数 0
EN

Stack Overflow用户

发布于 2017-03-20 10:28:14

Filter字段是搜索模型的呈现,它们的属性传递给GridView。创建该模型时,当模型为发送查询之前的初始值时,虚拟属性$FnGdiff由指定的值设置。属性$FnGdiff是聋设置0 ($this->FnG - $this->fd,在新模型中为: null = 0),该值在文本过滤器字段中呈现。因此,您应该只返回指定的值,没有新的记录。试试这个:

代码语言:javascript
复制
public function getFnGdiff() {
    return $this->isNewRecord ? '' : $this->FnG - $this->fd;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42899524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档