Placeholder для полей password формы user-profile-form

Главные вкладки

Аватар пользователя rufuzgunner rufuzgunner 19 ноября 2019 в 1:31

Всем привет. Через какую функцию можно задать 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'********' );
    }
}
?>

Лучший ответ

Аватар пользователя rufuzgunner rufuzgunner 20 ноября 2019 в 2:31
<?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;
}?>

Комментарии

Аватар пользователя bumble bumble 19 ноября 2019 в 20:14

Спонсором данного коммента выступил магазин мужской одежды "ДЕНИС": Денис - денис.
Мем на котором изображен магазин Денис с множеством вывесок повторяющих слово Денис, в формате демотиватора, в каждой из областей которого указано слово Денис

ЗЫ - Сорян за оффтоп.

Аватар пользователя gun_dose gun_dose 19 ноября 2019 в 21:46
1

Такие штуки делаются на чистом цсс, очень круто выглядит. А автор стартового коммента имел в виду, что плейсхолдер без лэйбла - это полный отстой. И это действительно так. Заполнил ты поля "длина", "ширина", "высота", а они без лэйблов и поди разбери, где что, когда у тебя три безымянных окошка с цифрами 10, 20 и 30.

Аватар пользователя Andruxa Andruxa 20 ноября 2019 в 2:23

А на картинке как раз нет переноса лейбла, он просто продублирован в плейсхолдере
Плохо это тем, что когда нет лейблов, и юзер ставит фокус на поле - он не понимает, что ему надо туда вводить. Особенно, это усугубляется на этапе валидации - допустим, юзер ввел телефон в поле имя, в котором допустимы только буквы. И пока он не очистит поле, он не поймет, что это поле для ввода имени.

Аватар пользователя bumble bumble 20 ноября 2019 в 2:31

Да, я вероятно не правильно понял. Думал модуль именно так и работает (берет значение лейбла и копирует его в плейсхолдер), вроде так логично. Но если "переносит" лейбл на место плейсхолдера - да это треш.

Аватар пользователя adano adano 19 ноября 2019 в 15:37

Там же их 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 возьмите в помощь.

Аватар пользователя rufuzgunner rufuzgunner 20 ноября 2019 в 2:31
<?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;
}?>