首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法让hook_form_alter或hook_form_FORM_ID_alter向搜索输入添加占位符文本

我无法让hook_form_alter或hook_form_FORM_ID_alter向搜索输入添加占位符文本
EN

Drupal用户
提问于 2018-02-23 16:58:48
回答 2查看 898关注 0票数 2

我知道有人问过这个问题,但到目前为止,关于这个问题的公认答案没有一个对我有用。我试图将占位符文本添加到默认的搜索表单块中。我使用的是一个我们称之为MyTheme的主题,它是Bartik的一个副本,它的工作方式与预期完全一致。

我尝试将以下函数添加到MyTheme.theme中:

代码语言:javascript
复制
function MyTheme_form_search_block_form_alter(&$form, &$form_state, $form_id) {
    $form['edit-keys']['#attributes']['placeholder'][] = t('Search');
}

代码语言:javascript
复制
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”。我也尝试过在函数中使用它。

EN

回答 2

Drupal用户

回答已采纳

发布于 2018-04-20 17:12:13

这就是最终对我起作用的东西。发帖是因为其他人似乎也有同样的问题。

我把这个放在MyTheme.theme文件的末尾。

代码语言:javascript
复制
/**
 * 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...');
}

希望这会对一些人有所帮助。

票数 2
EN

Drupal用户

发布于 2018-02-24 16:15:20

所以,我在我的本地安装中尝试过这一点,并且遇到了完全相同的问题。

请尝试将$form['keys']['#attributes']['placeholder']更改为$form['keys']['#title']

你的职责是-

代码语言:javascript
复制
function MyTheme_form_search_block_form_alter(array &$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    $form['keys']['#title'] = t("Search");
}
票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/256476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档