Yii2.0在GridView中下拉过滤筛选的实现 [ 2.0 版本 ]
Yii2.0在GridView中下拉过滤筛选的实现
细微的方便也许对于我们的用户来说将会获得最好的体验,用最方便,最快捷,最易操作的方式实现用户需要的功能是我们的工作和职责,今天分享一个在Yii2.0在GridView中下拉过滤筛选的实现,希望能够大家带来一点点的帮助和建议,不说废话了,直接看demo吧
如下是文章管理列表页中如何实现的demo
view层代码
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'category',
'label'=>'栏目',
'value'=>
function($model){
return Article::get_type_text($model->category); //主要通过此种方式实现
},
'filter' => Article::get_type(), //此处我们可以将筛选项组合成key-value形式
],
'title',
[
'attribute' => 'uid',
'label'=>'管理员',
'value'=>
function($model){
return Article::get_uid_type_text($model->uid); //主要通过此种方式实现
},
],
[
'attribute' => 'updatetime',
'label'=>'更新时间',
'value'=>
function($model){
return date('Y-m-d H:i:s',$model->updatetime); //主要通过此种方式实现
},
'headerOptions' => ['width' => '170'],
],
['class' => 'yii\grid\ActionColumn', 'header' => '操作'],
],
]); ?>
model层代码
/**
* 将栏目组合成key-value形式
*/
public static function get_type(){
$cat = Category::find()->all();
$cat = ArrayHelper::map($cat, 'id', 'name');
return $cat;
}
/**
* 通过栏目id获得栏目名称
* @param unknown $id
* @return Ambigous <unknown>
*/
public static function get_type_text($id){
$datas = Category::find()->all();
$datas = ArrayHelper::map($datas, 'id', 'name');
return $datas[$id];
}
好了至此我们的基本功能就已经实现了,功能很简单但是却很有用。
金色木叶枫 乌鲁木齐
注册时间:2013-07-01
最后登录:2017-10-17
在线时长:62小时10分
最后登录:2017-10-17
在线时长:62小时10分
- 粉丝21
- 金钱8685
- 威望70
- 积分10005
共 14 条评论
很好,留个名,以后忘记了来看看!
呵呵, 谢谢关注,欢迎常来!
一直想整个2.0的下拉菜单,终于看到了这篇教程,想问下:filter这种配置在哪里发现的啊,一直感觉学习方法不对,望指点,GridView没有看到啊
这个东西是对列设置, 在DataColumns这个类里面, 有filter属性, 如果是未赋什, 直接生成个INPUT 如果是array生成个SELECT, 如果是字符串, 直接返回字符串, 如果为false不生成过滤表单对象
标记一下,以后可能会用得着
没有效果,是哪里出错了吗
@金色木叶枫 filter不能是匿名函数,可以是字符串、数组、布尔值。
/** * @var string|array|boolean the HTML code representing a filter input (e.g. a text field, a dropdown list) * that is used for this data column. This property is effective only when [[GridView::filterModel]] is set. * * - If this property is not set, a text field will be generated as the filter input; * - If this property is an array, a dropdown list will be generated that uses this property value as * the list options. * - If you don't want a filter for this data column, set this value to be false. */ public $filter;
感谢分享!!!
实现还是有点问题,不知道什么情况
我的怎么有没有下拉框选择的效果
非常感谢分享
这个分页有问题, 比如 当前页是10页, 如果下拉搜索选择条件改变 不会自动跳转到第一页开始 而是从当前页开始,哪位有解决 请说下 非常感谢!
请问这个提示怎么写呢? value=0 的时候 请选择类型
这是什么问题
PHP Fatal Error – yii\base\ErrorException
Call to undefined method backend\models\MCnArea::get_type()
解决了,Thanks♪(・ω・)ノ