public function actionIndex()
{
$searchModel = new UserSearch();
// Filtro por Defecto y Reflejado en Formulario de Filtrado en Grid
$params = Yii::$app->request->queryParams;
if (!isset($params['UserSearch'])) {
$params['UserSearch']['status']=1;
}
$dataProvider = $searchModel->search($params);
// -----------------------------------------------------------
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
NOTA:Usar(!isset($params 'UserSearch']))para que solo se aplique comobúsqueda por defecto('Si no se ha definido ninguna condición de filtrado') 注意:使用(!Isset($ params 'UserSearch'])),以便它仅作为默认搜索('如果未定义筛选条件')应用
6条答案
按热度按时间aelbi1ox1#
一个简单的方法是使用搜索模型。
我使用默认Gii生成的代码来解释
假设您希望在页面加载时使用动态过滤器
使用链接作为
../index.php?r=user/index&UserSearch[id]=7
这将添加一个过滤器,其中id = 7即在我的情况下,因为id是主键,只有一个用户将被列出
比如说如果你想总是应用一个过滤器而不显示URL中的任何内容
这将创建一个过滤器,其中用户名包含字符串'mid'
如果你想要更高级的过滤器
你可以在UserSearch类中编辑**search()**函数,用于填充数据的查询和ActiveDataProvider将对你可用。说你不想列出不活跃的用户。
这种方法将为您提供无限的方式来过滤您的结果。希望这对你有帮助。
tag5nh1u2#
我也有同样的问题,它对我很有效
这有助于执行过滤器的行动是必要的,并为所有,在我的情况下,我需要它单独在一个环境中
ny6fqffe3#
NOTA:Usar(!isset($params 'UserSearch']))para que solo se aplique comobúsqueda por defecto('Si no se ha definido ninguna condición de filtrado')
注意:使用(!Isset($ params 'UserSearch'])),以便它仅作为默认搜索('如果未定义筛选条件')应用
tv6aics14#
Yii2 ActiveDataProvider本身需要一个查询生成器,这意味着你可以在传递查询对象时过滤结果,例如:
u1ehiz5o5#
有点晚了,但只是为了保持记录。
在Yii2
GridView
小部件中设置允许的过滤器的一种方法是使用其filterModel
对象的rules
函数返回使用save
属性设置的所需过滤字段。因此,您可以从此列表中删除所有不需要在GridView
中显示的不需要的过滤器。然后,您可以在
filterModel
的search
函数下自定义ActiveDataProvider
查询,以正确构建请求的过滤数据。pengsaosao6#
更容易!