lbmzorx 2018-01-09 01:21:39 3059次浏览 0条评论 0 0 0

使用自动Crud生成代码能够很方便的搭建脚手架,但是美中不足的是id项没有搜索框,这很难受

QQ拼音截图20180109010121.png

在index 视图中调GridView 配置'id',成 id:integer 不行,调整顺序也不行。找不出原因,本人追一下代码

GridView -> renderTableHeader() -> renderFilters() -> DataColumn->renderFilterCell -> renderFilterCellContent()

到此 renderFilterCellCentent()内有判断 $model->isAttributeActive($this->attribute) ,也就是‘id’属性是不是活动的属性,什么是活动的属性?
再追
model->activeAttributes() -> scenarios()
也就是定义了场景的属性是活动的属性
而自动生成的场景是空的

 public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

父级场景会自动调用 getValidators() 验证器内的属性,而验证器内的属性就是规则 rules(),而规则里面确实没有‘id’
因此在规则里面加上id的规则即可

也就是,搜索模型的属性,至少有一条规则与之匹配,如果定义该场景下的规则,会使用该场景下的规则,否则使用所有规则。
在搜索模型中添加

    public function rules()
    {
        $rules=[
            [['id',],'integer'],       
        ];
        return array_merge($rules,parent::rules());
    }

看看效果
QQ拼音截图20180109012027.png

已经添加上了!

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册