public function SearchApiPageBlockForm::buildForm in Search API Pages 8
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- src/
Form/ SearchApiPageBlockForm.php, line 104
Class
- SearchApiPageBlockForm
- Builds the search form for the search api page block.
Namespace
Drupal\search_api_page\FormCode
public function buildForm(array $form, FormStateInterface $form_state, $args = []) {
/* @var $search_api_page \Drupal\search_api_page\SearchApiPageInterface */
$search_api_page = $this->pageStorage
->load($this->pageId);
$langcode = $this->languageManager
->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)
->getId();
$form['search_api_page'] = [
'#type' => 'value',
'#value' => $search_api_page
->id(),
];
$default_value = '';
if (isset($args['keys'])) {
$default_value = $args['keys'];
}
if ($default_value === '') {
$request = $this
->getRequest();
if (trim($search_api_page
->getPath(), '/') === trim($request
->getPathInfo(), '/')) {
$default_value = $this
->getRequest()
->get('keys');
}
}
$keys_title = $this
->t('Enter the terms you wish to search for.', [], [
'langcode' => $langcode,
]);
$form['keys'] = [
'#type' => 'search',
'#title' => $this
->t('Search', [], [
'langcode' => $langcode,
]),
'#title_display' => 'invisible',
'#size' => 15,
'#default_value' => $default_value,
'#attributes' => [
'title' => $keys_title,
],
];
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Search', [], [
'langcode' => $langcode,
]),
];
if (!$search_api_page
->getCleanUrl()) {
$route = 'search_api_page.' . $langcode . '.' . $search_api_page
->id();
$form['#action'] = Url::fromRoute($route)
->toString();
$form['#method'] = 'get';
$form['actions']['submit']['#name'] = '';
}
// Dependency on search api config entity.
$this->renderer
->addCacheableDependency($form, $search_api_page
->getConfigDependencyName());
$this->renderer
->addCacheableDependency($form, $langcode);
// Match the search form styling of Drupal core.
$form['#attributes']['class'][] = 'search-form';
$form['#attributes']['class'][] = 'search-block-form';
$form['#attributes']['class'][] = 'container-inline';
$form['actions']['submit']['#attributes']['class'][] = 'search-form__submit';
return $form;
}