Issue #2987598 by eliclaggett, alexpott, Lendude, Sam152: View's pagination doesn't carry the exposed filter value
parent
3b6f89bae7
commit
fcf5177146
|
@ -183,7 +183,7 @@ class ViewsExposedForm extends FormBase {
|
|||
// https://www.drupal.org/node/342316 is resolved.
|
||||
$checked = Checkboxes::getCheckedCheckboxes($value);
|
||||
foreach ($checked as $option_id) {
|
||||
$view->exposed_raw_input[$key][] = $value[$option_id];
|
||||
$view->exposed_raw_input[$key][$option_id] = $value[$option_id];
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -0,0 +1,173 @@
|
|||
langcode: en
|
||||
status: true
|
||||
dependencies:
|
||||
config:
|
||||
- core.entity_view_mode.node.teaser
|
||||
module:
|
||||
- node
|
||||
id: test_exposed_form_pager
|
||||
label: ''
|
||||
module: views
|
||||
description: ''
|
||||
tag: ''
|
||||
base_table: node_field_data
|
||||
base_field: nid
|
||||
core: '8'
|
||||
display:
|
||||
default:
|
||||
display_options:
|
||||
access:
|
||||
type: none
|
||||
cache:
|
||||
type: tag
|
||||
exposed_form:
|
||||
options:
|
||||
reset_button: true
|
||||
type: basic
|
||||
filters:
|
||||
type:
|
||||
id: type
|
||||
table: node_field_data
|
||||
field: type
|
||||
relationship: none
|
||||
group_type: group
|
||||
admin_label: ''
|
||||
operator: in
|
||||
value: { }
|
||||
group: 1
|
||||
exposed: true
|
||||
expose:
|
||||
operator_id: type_op
|
||||
label: 'Content: Type'
|
||||
description: 'Exposed description'
|
||||
use_operator: false
|
||||
operator: ''
|
||||
identifier: type
|
||||
required: false
|
||||
remember: false
|
||||
multiple: true
|
||||
remember_roles:
|
||||
authenticated: authenticated
|
||||
anonymous: '0'
|
||||
administrator: '0'
|
||||
reduce: false
|
||||
is_grouped: false
|
||||
group_info:
|
||||
label: ''
|
||||
description: ''
|
||||
identifier: ''
|
||||
optional: true
|
||||
widget: select
|
||||
multiple: false
|
||||
remember: false
|
||||
default_group: All
|
||||
default_group_multiple: { }
|
||||
group_items: { }
|
||||
plugin_id: in_operator
|
||||
entity_type: node
|
||||
entity_field: type
|
||||
created:
|
||||
id: created
|
||||
table: node_field_data
|
||||
field: created
|
||||
relationship: none
|
||||
group_type: group
|
||||
admin_label: ''
|
||||
operator: between
|
||||
value:
|
||||
min: ''
|
||||
max: ''
|
||||
value: ''
|
||||
type: offset
|
||||
group: 1
|
||||
exposed: true
|
||||
expose:
|
||||
operator_id: created_op
|
||||
label: 'Authored on'
|
||||
description: ''
|
||||
use_operator: false
|
||||
operator: created_op
|
||||
identifier: created
|
||||
required: false
|
||||
remember: false
|
||||
multiple: false
|
||||
remember_roles:
|
||||
authenticated: authenticated
|
||||
anonymous: '0'
|
||||
administrator: '0'
|
||||
placeholder: ''
|
||||
min_placeholder: ''
|
||||
max_placeholder: ''
|
||||
is_grouped: false
|
||||
group_info:
|
||||
label: ''
|
||||
description: ''
|
||||
identifier: ''
|
||||
optional: true
|
||||
widget: select
|
||||
multiple: false
|
||||
remember: false
|
||||
default_group: All
|
||||
default_group_multiple: { }
|
||||
group_items: { }
|
||||
entity_type: node
|
||||
entity_field: created
|
||||
plugin_id: date
|
||||
pager:
|
||||
type: full
|
||||
options:
|
||||
items_per_page: 2
|
||||
offset: 0
|
||||
id: 0
|
||||
total_pages: null
|
||||
tags:
|
||||
previous: '‹ Previous'
|
||||
next: 'Next ›'
|
||||
first: '« First'
|
||||
last: 'Last »'
|
||||
expose:
|
||||
items_per_page: false
|
||||
items_per_page_label: 'Items per page'
|
||||
items_per_page_options: '5, 10, 25, 50'
|
||||
items_per_page_options_all: false
|
||||
items_per_page_options_all_label: '- All -'
|
||||
offset: false
|
||||
offset_label: Offset
|
||||
quantity: 9
|
||||
query:
|
||||
options:
|
||||
query_comment: ''
|
||||
type: views_query
|
||||
style:
|
||||
type: default
|
||||
row:
|
||||
type: 'entity:node'
|
||||
display_extenders: { }
|
||||
display_plugin: default
|
||||
display_title: Master
|
||||
id: default
|
||||
position: 0
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
- 'languages:language_interface'
|
||||
- url
|
||||
- url.query_args
|
||||
- 'user.node_grants:view'
|
||||
tags: { }
|
||||
page_1:
|
||||
display_options:
|
||||
path: test_exposed_form_pager
|
||||
display_extenders: { }
|
||||
display_plugin: page
|
||||
display_title: Page
|
||||
id: page_1
|
||||
position: 0
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
- 'languages:language_interface'
|
||||
- url
|
||||
- url.query_args
|
||||
- 'user.node_grants:view'
|
||||
tags: { }
|
|
@ -24,7 +24,7 @@ class ExposedFormTest extends ViewTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $testViews = ['test_exposed_form_buttons', 'test_exposed_block', 'test_exposed_form_sort_items_per_page'];
|
||||
public static $testViews = ['test_exposed_form_buttons', 'test_exposed_block', 'test_exposed_form_sort_items_per_page', 'test_exposed_form_pager'];
|
||||
|
||||
/**
|
||||
* Modules to enable.
|
||||
|
@ -381,4 +381,32 @@ class ExposedFormTest extends ViewTestBase {
|
|||
$this->assertRaw('<div class="views-row">', 'Views result shown.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the exposed form with a pager.
|
||||
*/
|
||||
public function testExposedFilterPagination() {
|
||||
$this->drupalCreateContentType(['type' => 'post']);
|
||||
// Create some random nodes.
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
$this->drupalCreateNode(['type' => 'post']);
|
||||
}
|
||||
|
||||
$this->drupalGet('test_exposed_form_pager');
|
||||
$this->getSession()->getPage()->fillField('type[]', 'post');
|
||||
$this->getSession()->getPage()->fillField('created[min]', '-1 month');
|
||||
$this->getSession()->getPage()->fillField('created[max]', '+1 month');
|
||||
|
||||
// Ensure the filters can be applied.
|
||||
$this->getSession()->getPage()->pressButton('Apply');
|
||||
$this->assertFieldByName('type[]', 'post');
|
||||
$this->assertFieldByName('created[min]', '-1 month');
|
||||
$this->assertFieldByName('created[max]', '+1 month');
|
||||
|
||||
// Ensure the filters are still applied after pressing next.
|
||||
$this->clickLink('Next ›');
|
||||
$this->assertFieldByName('type[]', 'post');
|
||||
$this->assertFieldByName('created[min]', '-1 month');
|
||||
$this->assertFieldByName('created[max]', '+1 month');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@ class ExposedFormRenderTest extends ViewsKernelTestBase {
|
|||
$expected = [
|
||||
'type' => 'All',
|
||||
'type_with_default_value' => 'article',
|
||||
'multiple_types_with_default_value' => ['article'],
|
||||
'multiple_types_with_default_value' => ['article' => 'article'],
|
||||
];
|
||||
$this->assertSame($view->exposed_raw_input, $expected);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue