Как я могу изменить значение заполнителя формы поиска?


Как я могу изменить значение заполнителя формы поиска? Я могу изменить его значение в своем файле .theme, но я хочу, чтобы он также был переведен.

Как правильно это сделать?

screenshot

Author: kiamlaluno, 2016-07-20

7 answers

Вы не изменяете TranslatableMarkup объект: Вы заменяете его другим объектом TranslatableMarkup, полученным из t('The new placeholder'), или new TranslatableMarkup('The new placeholder') (или метод, возвращающий объект TranslatableMarkup).

function mytheme_form_search_block_form_alter(&$form, FormStateInterface $form_state) {
  $form['keys']['#attributes']['title'] = t('The new placeholder');
}

Результат этого кода следующий (в Google Chrome, работающем на OS X El Capitan).

screenshot

То, что вы показываете, - это не заполнитель, а заголовок ввода. Чтобы изменить заполнитель элемента формы, следует использовать код, аналогичный следующему один.

function mytheme_form_search_block_form_alter(&$form, FormStateInterface $form_state) {
  $form['keys']['#attributes']['placeholder'] = t('The new placeholder');
}

Используя этот код, вы получите следующий результат.

screenshot

 14
Author: kiamlaluno, 2018-01-08 09:33:05

Для этого вы можете использовать изменение формы

 function yourtheme_form_search_block_form_alter(&$form, &$form_state) {
      $form['keys']['#attributes']['placeholder'][] = t('enter the terms you wish to search for');
    }
 1
Author: Naveen, 2016-07-20 07:00:51

Я думаю, мы могли бы изменить детали формы из hook_form_FORM_ID_alter, следующий код поможет устранить проблему:)

function my_module_form_search_block_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
  $form['keys']['#title'] = t('Your custom Title');
  $form['keys']['#attributes']['title'] = t('Your custom Placeholder');
}

Приведенный выше код изменит заголовок и заполнитель формы поиска.

 1
Author: Leopathu, 2016-07-20 07:24:32

Это работает на меня

<?php

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_alter().
 */
function MODULE_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
 if ($form_id == 'search_block_form') {
   $form['keys']['#title'] = t('Your custom Title');
 }
}
 0
Author: Karthikeyan Manivasagam, 2017-08-18 12:00:08

Этот код работает

Https://www.drupal.org/project/bootstrap/issues/2884682

function projet_preprocess_input(&$variables) {
  // Set a placeholder for all search form elements.
  if ($variables['attributes']['type'] == 'search') {
    $variables['attributes']['placeholder'] = 'youhou';
  }
}
 0
Author: cafe3rdwave, 2020-02-20 17:13:56
function MODULE_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
if($form_id == 'search_form') {
        $form['keys']['#attributes']['placeholder'] = t('Search topics...');
 }
}
 0
Author: joy kodali, 2020-09-29 12:36:53

Это сработало для меня:

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {

  if ($form_id == 'search_form') {

    $form['basic']['keys']['#title'] = 'Your Title'; 
  }
}
 -1
Author: Rimi B, 2019-05-28 11:08:16