Mid*_*hun 10
一种简单的方法是使用搜索模型.
我正在使用Default Gii生成的代码来解释方法
public function actionIndex()
{
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Run Code Online (Sandbox Code Playgroud)
假设您在加载页面时需要动态过滤器
使用链接作为
../index.php?r=user/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,
]);
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个过滤器,其中用户的名称包含字符串'mid'
如果你想要更高级的过滤器
您可以编辑UserSearch类中的search()函数,查询用于填充数据,ActiveDataProvider将可供您使用.假设您不想列出不活动的用户.
public function search($params)
{
$query = User::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
$query->andFilterWhere(['active_status' => 1]);
....
Run Code Online (Sandbox Code Playgroud)
这种方法将为您提供无限的方法来过滤您的结果..希望这有助于..
我有同样的问题,它对我有用
public function actionIndex()
{
$searchModel = new UserSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->andFilterWhere(['status'=>1]);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Run Code Online (Sandbox Code Playgroud)
这有助于执行过滤器以获取需要的操作,对于所有人而言,在我的情况下,我需要在环境中单独使用它
| 归档时间: |
|
| 查看次数: |
11239 次 |
| 最近记录: |