Всем привет. Через какую функцию можно задать placeholder для формы #user-profile-form, для полей пароля? Форма появляется при задании пароля нового пользователя. Функция form_alter не помогает.
<?php
function theme_form_alter( &$form, &$form_state, $form_id ) {
if (in_array( $form_id, array('user_profile_form'))) {
$form['pass']['pass1']['#attributes']['placeholder'] = t( '********' );
$form['pass']['pass2']['#attributes']['placeholder'] = t( '********' );
}
}?>
Комментарии
https://www.drupal.org/project/form_placeholder
Спасибо за ответ, но я уже устанавливал этот модуль. Как понял он делает placeholder из label - немного не подходит.
Перенос лейблов в плейсхолдеры - одна их наихудших практик UI
Вашу проблему решит https://www.drupal.org/project/hint
Del
Почему?
Спонсором данного коммента выступил магазин мужской одежды "ДЕНИС": Денис - денис.
ЗЫ - Сорян за оффтоп.
BTW, MD'шные инпуты вполне неплохи:
Такие штуки делаются на чистом цсс, очень круто выглядит. А автор стартового коммента имел в виду, что плейсхолдер без лэйбла - это полный отстой. И это действительно так. Заполнил ты поля "длина", "ширина", "высота", а они без лэйблов и поди разбери, где что, когда у тебя три безымянных окошка с цифрами 10, 20 и 30.
Это да. Сам пла́чу когда такое просят.
Вот, кстати, отличный пример анти-юзабилити: http://mta-industry.ru/service#tech-support-entityform-edit-form
А на картинке как раз нет переноса лейбла, он просто продублирован в плейсхолдере
Плохо это тем, что когда нет лейблов, и юзер ставит фокус на поле - он не понимает, что ему надо туда вводить. Особенно, это усугубляется на этапе валидации - допустим, юзер ввел телефон в поле имя, в котором допустимы только буквы. И пока он не очистит поле, он не поймет, что это поле для ввода имени.
Да, я вероятно не правильно понял. Думал модуль именно так и работает (берет значение лейбла и копирует его в плейсхолдер), вроде так логично. Но если "переносит" лейбл на место плейсхолдера - да это треш.
https://developer.mozilla.org/ru/docs/Web/HTML/Element/input#attr-placeh...
Лисе и хрому абсолютно пофиг. Что там, что там плейсхолдеры ставятся на type="password"
Там же их 3 поля (включая редактирование пользователя):
<?php
function HOOK_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
$form['account']['current_pass'] ...
$form['account']['pass'] ...
// И вроде так будет для нового пароля:
$form['account']['pass']['pass1']['#attributes']['placeholder'] = '********';
$form['account']['pass']['pass2']['#attributes']['placeholder'] = '********';
}
?>
Devel возьмите в помощь.
<?phpfunction THEME_form_alter( &$form, &$form_state, $form_id ) {
switch ($form_id) {
case 'user_profile_form':
$form['account']['pass']['#process'] = array('form_process_password_confirm', 'register_alter_password_confirm');
break;
}
}
function register_alter_password_confirm($element) {
$element['pass1']['#attributes']['placeholder'] = t("********");
$element['pass2']['#attributes']['placeholder'] = t("********");
return $element;
}?>