Я пытаюсь добавить атрибут placeholder во все текстовые поля на моем сайте, но мне не повезло.
Я создал модуль, который переопределяет hook_form_alter
function mymodule_form_alter(&$form, &$form_state, $form_id)
{
foreach ($form as $key => $value) {
if ("textfield" == $value["#type"]){
$value['#attributes']["placeholder"] = t($value["#title"]);
}
}
}
Я должен сказать вам, что я также использую модуль веб-формы.
Слегка измените его на ....
$value
в области foreach значение типа не является ссылкой.РЕДАКТИРОВАТЬ:
Я просто экспериментировал со следующим кодом, и мне удалось рекурсивно перебрать всю форму для текстовых полей, чтобы редактировать их атрибуты.
источник
Возможно, вы могли бы сделать это с помощью
hook_form_alter
илиhook_form_FORM_ID_alter
добавив атрибут placeholderнапример, не проверено, но что-то вроде:
Найдите скрытый элемент формы в HTML- названии веб-формы,
form_id
чтобы получить правильный идентификатор формы для имениform_alter
функции.источник
Лучший подход к коду Josua Pedersen:
источник
В вашем коде вы изменяете переменную,
$value
которая никогда больше не ассоциируется с переменной$form
, которая передается по ссылке.Ясно, что вы вносите некоторые изменения, но не отправляете их обратно в Drupal.
Кроме того, вы можете сделать это так (я не проверял, но в теории это должно работать).
Мне просто лень было добавить чек
fieldset
и заполнить детей. Но я думаю, вы можете изменить это очень легко.источник
Небольшое улучшение в шаблонном решении @ Josua: этот код также добавит текст заполнителя в поля электронной почты веб-формы.
источник
используя hook_form_alter попробуйте это
источник
Для тех, кто использует более старую или устаревшую версию модуля веб-формы Drupal , стоит отметить, что поддержка заполнителей была добавлена в
7.x-4.x branch
(июнь 2013 г.).Таким образом, функциональность заполнителя HTML5 теперь является встроенной встроенной опцией наряду с пользовательскими классами CSS для компонентов и некоторыми другими давно запрашиваемыми функциями.
Вот скриншот того, как появляется новая функциональность:
источник
Я полагаю, что в большинстве случаев можно добавить атрибуты-заполнители только для некоторых форм.
Если вы хотите добавить заполнитель для всех веб-форм, вы можете сделать это следующим образом:
источник
Просто используйте для этого модуль: Webform Hints
Это именно то, что вам нужно. Его легко управлять, и нет необходимости настраивать код. Этот модуль также поддерживает устаревшие браузеры, которые не поддерживают атрибут placeholder.
источник