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で実行))。
表示しているのはプレースホルダーではなく、入力タイトルです。フォーム要素のプレースホルダーを変更するには、次のようなコードを使用する必要があります。
function mytheme_form_search_block_form_alter(&$form, FormStateInterface $form_state) {
$form['keys']['#attributes']['placeholder'] = t('The new placeholder');
}
このコードを使用すると、次の結果が得られます。
これにはフォームの変更を使用できます
function yourtheme_form_search_block_form_alter(&$form, &$form_state) {
$form['keys']['#attributes']['placeholder'][] = t('enter the terms you wish to search for');
}
フォームの詳細を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');
}
上記のコードは、検索フォームのタイトルとプレースホルダーを変更します。
それは私のために働いています
<?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';
}
}