Browse Source

Merge pull request #3448 from bgaleotti/autocomplete-config

Autocomplete options
Andrej Hudec 9 years ago
parent
commit
4728a07266

+ 4 - 0
Form/Type/ModelAutocompleteType.php

@@ -73,6 +73,8 @@ class ModelAutocompleteType extends AbstractType
         $view->vars['req_param_name_search'] = $options['req_param_name_search'];
         $view->vars['req_param_name_page_number'] = $options['req_param_name_page_number'];
         $view->vars['req_param_name_items_per_page'] = $options['req_param_name_items_per_page'];
+        $view->vars['quiet_millis'] = $options['quiet_millis'];
+        $view->vars['cache'] = $options['cache'];
 
         // CSS classes
         $view->vars['container_css_class'] = $options['container_css_class'];
@@ -120,6 +122,8 @@ class ModelAutocompleteType extends AbstractType
             'placeholder'                   => '',
             'minimum_input_length'          => 3, //minimum 3 chars should be typed to load ajax data
             'items_per_page'                => 10, //number of items per page
+            'quiet_millis'                  => 100,
+            'cache'                         => false,
 
             'to_string_callback'            => null,
 

+ 6 - 0
Resources/doc/reference/form_types.rst

@@ -252,6 +252,12 @@ minimum_input_length
 items_per_page
   defaults to 10. Number of items per one ajax request.
 
+quiet_millis
+  defaults to 100. Number of milliseconds to wait for the user to stop typing before issuing the ajax request.
+
+cache
+  defaults to false. Set to true, if the requested pages should be cached by the browser.
+
 url
   defaults to "". Target external remote URL for ajax requests.
   You usually should not need to set this manually.

+ 2 - 1
Resources/views/Form/Type/sonata_type_model_autocomplete.html.twig

@@ -44,7 +44,8 @@ file that was distributed with this source code.
                 ajax: {
                     url:  '{{ url ?: path(route.name, route.parameters|default([]))|e('js') }}',
                     dataType: 'json',
-                    quietMillis: 100,
+                    quietMillis: {{ quiet_millis }},
+                    cache: {{ cache ? 'true' : 'false' }},
                     data: function (term, page) { // page is the one-based page number tracked by Select2
                         {% block sonata_type_model_autocomplete_ajax_request_parameters %}
                         return {

+ 2 - 0
Tests/Form/Type/ModelAutocompleteTypeTest.php

@@ -42,6 +42,8 @@ class ModelAutocompleteTypeTest extends TypeTestCase
         $this->assertSame('', $options['placeholder']);
         $this->assertSame(3, $options['minimum_input_length']);
         $this->assertSame(10, $options['items_per_page']);
+        $this->assertSame(100, $options['quiet_millis']);
+        $this->assertSame(false, $options['cache']);
         $this->assertSame('', $options['width']);
         $this->assertFalse($options['dropdown_auto_width']);