web-dev-qa-db-ja.com

検索フォームのプレースホルダー値を変更するにはどうすればよいですか?

検索フォームのプレースホルダー値を変更するにはどうすればよいですか? 。themeファイルでその値を変更できますが、それも翻訳可能にする必要があります。

これを行う正しい方法は何ですか?

screenshot

6
sAs59

TranslatableMarkup オブジェクトを変更しない:t('The new placeholder')またはnew TranslatableMarkup('The new placeholder')から取得した別のTranslatableMarkupオブジェクトに置き換えます(または、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

13
kiamlaluno

これにはフォームの変更を使用できます

 function yourtheme_form_search_block_form_alter(&$form, &$form_state) {
      $form['keys']['#attributes']['placeholder'][] = t('enter the terms you wish to search for');
    }
1
Naveen

フォームの詳細を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
Leopathu

それは私のために働いています

<?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');
 }
}

このコードは機能します

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
cafe3rdwave