From e209a4b4777298622f2f21de8f60336b5b507a61 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 11:42:57 +0600 Subject: [PATCH 1/6] Closed #10653: Add info about additional filters for GridView to docs [skip ci] --- docs/guide/output-data-widgets.md | 74 +++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index 4f13d2fe10..174cbf02cd 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -421,6 +421,80 @@ echo GridView::widget([ ]); ``` +Most of the times using GridView filters in table headers is enough, but in case you need separate filter form, +you can easily add it too. You can create partial view `_search.php` with the following contents: + +```php + + +
+ ['index'], + 'method' => 'get', + ]); ?> + + field($model, 'title') ?> + + field($model, 'creation_date') ?> + +
+ 'btn btn-primary']) ?> + 'btn btn-default']) ?> +
+ + +
+``` + +and include it in `index.php` view like so: + +```php +render('_search', ['model' => $searchModel]) ?> +``` + +Note that if you use Gii to generate CRUD code, separate filter form (`_search.php`) is generated by default, +but not displayed in `index.php` view, so you have to uncomment it if needed. + +Separate filter form is useful when you need to filter by date range for example. +In this case we need to add non DB attributes `createdFrom` and `createdTo` to search model: + +```php +class PostSearch extends Post +{ + /** + * @var string + */ + public $createdFrom; + + /** + * @var string + */ + public $createdTo; +} +``` + +Extend query conditions like so: + +```php +$query->andFilterWhere(['>=', 'creation_date', $this->createdFrom]) + ->andFilterWhere(['<=', 'creation_date', $this->createdTo]); +``` + +And add according fields to filter form: + +```php +field($model, 'creationFrom') ?> + +field($model, 'creationTo') ?> +``` ### Working with model relations From a9404a5161db43e2e1359883031fa2d699cb8970 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 15:00:03 +0600 Subject: [PATCH 2/6] Updated Separate filter form section in docs [skip ci] --- docs/guide/output-data-widgets.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index 174cbf02cd..34485c3906 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -421,8 +421,10 @@ echo GridView::widget([ ]); ``` -Most of the times using GridView filters in table headers is enough, but in case you need separate filter form, -you can easily add it too. You can create partial view `_search.php` with the following contents: +### Separate filter form + +Most of the times using GridView filters in table headers is enough, but in case you need a separate filter form, +you can easily add it as well. You can create partial view `_search.php` with the following contents: ```php render('_search', ['model' => $searchModel]) ?> ``` -Note that if you use Gii to generate CRUD code, separate filter form (`_search.php`) is generated by default, +> Note: if you use Gii to generate CRUD code, the separate filter form (`_search.php`) is generated by default, +but is commented in `index.php` view. Uncomment it and it's ready to use! but not displayed in `index.php` view, so you have to uncomment it if needed. -Separate filter form is useful when you need to filter by date range for example. -In this case we need to add non DB attributes `createdFrom` and `createdTo` to search model: +Separate filter form is useful when you need need to filter by fields, that are not displayed in GridView, +or for special filtering conditions, like date range. For filtering by date range we can to add non DB attributes +`createdFrom` and `createdTo` to the search model: ```php class PostSearch extends Post @@ -481,14 +485,14 @@ class PostSearch extends Post } ``` -Extend query conditions like so: +Extend query conditions in the search method like so: ```php $query->andFilterWhere(['>=', 'creation_date', $this->createdFrom]) - ->andFilterWhere(['<=', 'creation_date', $this->createdTo]); + ->andFilterWhere(['<=', 'creation_date', $this->createdTo]); ``` -And add according fields to filter form: +And add the representative fields to the filter form: ```php field($model, 'creationFrom') ?> From 5f000b7105a567ad2ff256114344e1c9e7d1e409 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 16:45:59 +0600 Subject: [PATCH 3/6] Fixed few errors in "Separate filter form" section in docs, added russian translation [skip ci] --- docs/guide-ru/output-data-widgets.md | 79 ++++++++++++++++++++++++++++ docs/guide/output-data-widgets.md | 5 +- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/docs/guide-ru/output-data-widgets.md b/docs/guide-ru/output-data-widgets.md index 1f46664029..df23ce0b25 100644 --- a/docs/guide-ru/output-data-widgets.md +++ b/docs/guide-ru/output-data-widgets.md @@ -421,6 +421,85 @@ echo GridView::widget([ ]); ``` +### Отдельная форма фильтрации + +Встроенных в заголовки таблицы фильтров GridView достаточно для большинства задач, +но добавление отдельной формы фильтрации не представляет особой сложности. +Создайте частичное представление `_search.php` со следующим содержимым: + +```php + + +
+ ['index'], + 'method' => 'get', + ]); ?> + + field($model, 'title') ?> + + field($model, 'creation_date') ?> + +
+ 'btn btn-primary']) ?> + 'btn btn-default']) ?> +
+ + +
+``` + +и добавьте его отображение в `index.php` таким образом: + +```php +render('_search', ['model' => $searchModel]) ?> +``` + +> Note: если вы используете Gii для генерации CRUD кода, отдельная форма фильтрации (`_search.php`) +генерируется по умолчанию, но закомментирована в представлении `index.php`. Вам остается только раскомментировать +эту строку и форма готова к использованию! + +Отдельная форма фильтрации бывает полезна в случае необходимости фильтрации по полям, которые не отображаются в GridView +или особых условий фильтрации, например по диапазону дат. Для фильтра по диапазону дат мы можем добавить +дополнительные атрибуты `createdFrom` и `createdTo` в поисковую модель (их нет в соответствующей таблице модели): + +```php +class PostSearch extends Post +{ + /** + * @var string + */ + public $createdFrom; + + /** + * @var string + */ + public $createdTo; +} +``` + +Расширим условия запроса в методе `search()`: + +```php +$query->andFilterWhere(['>=', 'creation_date', $this->createdFrom]) + ->andFilterWhere(['<=', 'creation_date', $this->createdTo]); +``` + +И добавим соответствующие поля в форму фильтрации: + +```php +field($model, 'creationFrom') ?> + +field($model, 'creationTo') ?> +``` ### Отображение зависимых моделей diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index 34485c3906..2ade3c0c1b 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -464,9 +464,8 @@ and include it in `index.php` view like so: > Note: if you use Gii to generate CRUD code, the separate filter form (`_search.php`) is generated by default, but is commented in `index.php` view. Uncomment it and it's ready to use! -but not displayed in `index.php` view, so you have to uncomment it if needed. -Separate filter form is useful when you need need to filter by fields, that are not displayed in GridView, +Separate filter form is useful when you need to filter by fields, that are not displayed in GridView or for special filtering conditions, like date range. For filtering by date range we can to add non DB attributes `createdFrom` and `createdTo` to the search model: @@ -485,7 +484,7 @@ class PostSearch extends Post } ``` -Extend query conditions in the search method like so: +Extend query conditions in the `search()` method like so: ```php $query->andFilterWhere(['>=', 'creation_date', $this->createdFrom]) From e37c213ce42b3a0e962e553ae25c4f783886a576 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 17:03:33 +0600 Subject: [PATCH 4/6] Fixed word plural form error in docs in "Separate filter form" section [skip ci] --- docs/guide/output-data-widgets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index 2ade3c0c1b..0116fa60a2 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -423,7 +423,7 @@ echo GridView::widget([ ### Separate filter form -Most of the times using GridView filters in table headers is enough, but in case you need a separate filter form, +Most of the time using GridView filters in table headers is enough, but in case you need a separate filter form, you can easily add it as well. You can create partial view `_search.php` with the following contents: ```php From 5c5cbc3099861d9db52b21109081ed0f3b72f019 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 17:28:49 +0600 Subject: [PATCH 5/6] Updated "Separate filter form" section in docs [skip ci] --- docs/guide-ru/output-data-widgets.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/guide-ru/output-data-widgets.md b/docs/guide-ru/output-data-widgets.md index df23ce0b25..846d2223cc 100644 --- a/docs/guide-ru/output-data-widgets.md +++ b/docs/guide-ru/output-data-widgets.md @@ -424,7 +424,9 @@ echo GridView::widget([ ### Отдельная форма фильтрации Встроенных в заголовки таблицы фильтров GridView достаточно для большинства задач, -но добавление отдельной формы фильтрации не представляет особой сложности. +но добавление отдельной формы фильтрации не представляет особой сложности. Она бывает полезна в случае необходимости +фильтрации по полям, которые не отображаются в GridView или особых условий фильтрации, например по диапазону дат. + Создайте частичное представление `_search.php` со следующим содержимым: ```php @@ -467,9 +469,8 @@ use yii\widgets\ActiveForm; генерируется по умолчанию, но закомментирована в представлении `index.php`. Вам остается только раскомментировать эту строку и форма готова к использованию! -Отдельная форма фильтрации бывает полезна в случае необходимости фильтрации по полям, которые не отображаются в GridView -или особых условий фильтрации, например по диапазону дат. Для фильтра по диапазону дат мы можем добавить -дополнительные атрибуты `createdFrom` и `createdTo` в поисковую модель (их нет в соответствующей таблице модели): +Для фильтра по диапазону дат мы можем добавить дополнительные атрибуты `createdFrom` и `createdTo` в поисковую модель +(их нет в соответствующей таблице модели): ```php class PostSearch extends Post From a3c7ed63b08a71ff480d191a1634d47949e13449 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 3 Feb 2016 17:32:19 +0600 Subject: [PATCH 6/6] Updated "Separate filter form" section in docs [skip ci] --- docs/guide-ru/output-data-widgets.md | 6 +++--- docs/guide/output-data-widgets.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/guide-ru/output-data-widgets.md b/docs/guide-ru/output-data-widgets.md index 846d2223cc..8e5caac12c 100644 --- a/docs/guide-ru/output-data-widgets.md +++ b/docs/guide-ru/output-data-widgets.md @@ -423,9 +423,9 @@ echo GridView::widget([ ### Отдельная форма фильтрации -Встроенных в заголовки таблицы фильтров GridView достаточно для большинства задач, -но добавление отдельной формы фильтрации не представляет особой сложности. Она бывает полезна в случае необходимости -фильтрации по полям, которые не отображаются в GridView или особых условий фильтрации, например по диапазону дат. +Фильтров в шапке GridView достаточно для большинства задач, но добавление отдельной формы фильтрации не представляет +особой сложности. Она бывает полезна в случае необходимости фильтрации по полям, которые не отображаются в GridView +или особых условий фильтрации, например по диапазону дат. Создайте частичное представление `_search.php` со следующим содержимым: diff --git a/docs/guide/output-data-widgets.md b/docs/guide/output-data-widgets.md index 0116fa60a2..8479af6739 100644 --- a/docs/guide/output-data-widgets.md +++ b/docs/guide/output-data-widgets.md @@ -423,7 +423,7 @@ echo GridView::widget([ ### Separate filter form -Most of the time using GridView filters in table headers is enough, but in case you need a separate filter form, +Most of the time using GridView header filters is enough, but in case you need a separate filter form, you can easily add it as well. You can create partial view `_search.php` with the following contents: ```php