实现此目的的一个简单方法是使用搜索模型。
我使用默认 Gii 生成的代码来解释方法
public function actionIndex()
{
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
假设您想要在页面加载时使用动态过滤器
使用链接作为
../index.php?r=用户/index&UserSearch[id]=7
这将添加一个过滤器,其中 id = 7 即在我的情况下,因为 id 是主键,所以只会列出一个用户
假设您是否希望始终应用过滤器而不在网址中显示任何内容
public function actionIndex()
{
$searchModel = new UserSearch();
$searchModel->name = 'mid';
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
这将创建一个过滤器,其中用户名包含字符串“mid”
如果您想要更高级的过滤器
你可以编辑search()UserSearch 类中的函数用于填充数据的查询和 ActiveDataProvider 将可供您使用。
假设您不想列出不活动的用户。
public function search($params)
{
$query = User::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
$query->andFilterWhere(['active_status' => 1]);
....
此方法将为您提供无限的方法来过滤结果..
希望这可以帮助 ..