我知道有人问过这个问题,但到目前为止,关于这个问题的公认答案没有一个对我有用。我试图将占位符文本添加到默认的搜索表单块中。我使用的是一个我们称之为MyTheme的主题,它是Bartik的一个副本,它的工作方式与预期完全一致。
我尝试将以下函数添加到MyTheme.theme中:
function MyTheme_form_search_block_form_alter(&$form, &$form_state, $form_id) {
$form['edit-keys']['#attributes']['placeholder'][] = t('Search');
}和
function MyTheme_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
if ($form_id == 'search_block_form') {
// Add placeholder text
$form['keys']['#attributes']['placeholder'] = t('Search');
}
}还有很多很多不同的地方。我尝试过这两种功能,有和没有“\Drupal\Core表单.”包括在内。我试过“键”和“编辑键”。我已经尝试过了,无论有没有空的'[]‘后占位符。什么都没起作用。
在每一种情况下,使用hook_form_FORM_ID_alter根本无法做任何事情,而使用hook_form_alter则会导致“死亡的白屏幕”。
我不明白我做错了什么。
更新:出于某种原因,Drupal决定将表单输入的id更改为“edit-2”。我也尝试过在函数中使用它。
发布于 2018-04-20 17:12:13
这就是最终对我起作用的东西。发帖是因为其他人似乎也有同样的问题。
我把这个放在MyTheme.theme文件的末尾。
/**
* Add placeholder text to the search forms.
*/
function MyTheme_form_search_block_form_alter(&$form,\Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['keys']['#attributes']['placeholder'] = t('Search this site...');
}希望这会对一些人有所帮助。
发布于 2018-02-24 16:15:20
所以,我在我的本地安装中尝试过这一点,并且遇到了完全相同的问题。
请尝试将$form['keys']['#attributes']['placeholder']更改为$form['keys']['#title']
你的职责是-
function MyTheme_form_search_block_form_alter(array &$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['keys']['#title'] = t("Search");
}https://drupal.stackexchange.com/questions/256476
复制相似问题