См. основной материал для введения.
Форма в нашем случае не требует отправки/проверки данных, и реализует только два метода — getFormId и buildForm.
Хотя форма и не содержит кнопки submit, но все равно будет реагировать на отправку данных, поэтому мы заблокируем событие onsubmit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php /** * @file * Contains \Drupal\custom_blocks\Form\ProductSearch. */ namespace Drupal\custom_blocks\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; class ProductSearch extends FormBase { /** * {@inheritdoc}. */ public function getFormId() { return 'product_search'; } /** * {@inheritdoc}. */ public function buildForm(array $form, FormStateInterface $form_state) { // заблокируем отправку формы $form['#attributes'] = [ 'onsubmit' => 'return false' ]; $form['name'] = array( '#type' => 'textfield', // подключим маршрут авто-дополнения '#autocomplete_route_name' => 'custom_blocks.autocomplete.product_search', '#attributes' => [ 'placeholder' => $this->t('Title, articul, brand...'), 'autocomplete' => 'off' ] ); return $form; } } |