Я не знаю, как установить фильтр по умолчанию GridView. Это означает, что при загрузке страницы он загрузит фильтр с определенным условием, которое я установил.Фильтр по умолчанию в GridView с Yii2
Идея для этого? Благодаря
Я не знаю, как установить фильтр по умолчанию GridView. Это означает, что при загрузке страницы он загрузит фильтр с определенным условием, которое я установил.Фильтр по умолчанию в GridView с Yii2
Идея для этого? Благодаря
Простой способ сделать это с помощью поисковой модели.
Я использую по умолчанию 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 = пользователь/индекс & UserSearch [id] = 7
Это добавит фильтр, где идентификатор = 7 то есть в моем случае, так как идентификатор является первичным ключом только один пользователь будет перечислен
Скажем, если вы хотите всегда применить фильтр, не показывая что-либо в URL
public function actionIndex()
{
$searchModel = new UserSearch();
$searchModel->name = 'mid';
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Это позволит создать фильтр, где имя пользователя имеет строку «середина»
если вы хотите более продвинутые фильтры
вы можете редактировать поиска() функцию в UserSearch класса т здесь будет доступен запрос, используемый для заполнения данных и ActiveDataProvider. скажите, что вы не хотите указывать пользователей, которые неактивны.
public function search($params)
{
$query = User::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
$query->andFilterWhere(['active_status' => 1]);
....
этот метод даст вам безграничные способов фильтрации результатов .. Надеюсь, что это помогает ..
Yii2 ActiveDataProvider это сам нужен query builder, означает, что вы можете отфильтровать результаты при прохождении его объекта запроса, например:
$query = Post::find()->where['status' => 'published'];
// Todo and more conditions with $query object
$provider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 20,
],
]);
Немного поздно, но только вести запись на SO.
Одним из способов установления допустимых фильтров в Yii2 GridView
виджете использовать rules
функции своего filterModel
объекта для возвращения разыскиваемой полой фильтрации, установленные с save
атрибутами. Таким образом, вы можете удалить из этого списка все нежелательные фильтры, которые не должны отображаться в GridView
.
Затем вы можете настроить запрос ActiveDataProvider
в соответствии с search
функцией filterModel
для правильной сборки запрошенных фильтрованных данных.
У меня была такая же проблема, и она работала для меня
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,
]);
}
Это помогает выполнять фильтр для действий необходим и для всех, в моем случае мне нужно было в одиночку в условиях
Предоставлять Ваше Specific conditons в 'SearchModel' class –