Два вопроса про Masked Input

Аватар пользователя Алексей Дёмин

Привет!
Подскажите, как правильно добавить Masked Input в своей форме к полю type=tel?
Пробовал так, не работает.

<?php
    $form
['contacts']['field_contact_person_phone'] = [
      
'#type' => 'tel',
      
'#required' => true,
      
'#title' => 'Ваш телефон',
      
'#default_value' => '',
      
'#mask' => '+7(999)999-9999',
      
'#placeholder' => '+7(___)___-__-__',
      
'#size' => 30,
      
'#attached' => array(
        
'library' => array(
          
'masked_input/drupal.masked_input',
        ),
      ),
    ];
?>

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

InvalidArgumentException: The URI 'tel:%2B7%28908%29729-76-03' is invalid. You must use a valid URI scheme. Use base: for a path, e.g., to a Drupal file that needs the base path. Do not use this for internal paths controlled by Drupal. in Drupal\Core\Utility\UnroutedUrlAssembler->assemble() (line 64 of core/lib/Drupal/Core/Utility/UnroutedUrlAssembler.php).

У коллег вроде не всплывало, но что-то ссыкатно переносить на сервер.

Заранее спасибо за ответы!

Ключевые слова:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя Phantom63rus
Phantom63rus 1 месяц назад

Было пару модулей, которые добавляли поле телефон сразу со всеми фентифлюшками. Может лучше ими воспользоваться?

Аватар пользователя Алексей Дёмин
Алексей Дёмин 1 месяц назад
Phantom63rus написал:
Было пару модулей, которые добавляли поле телефон сразу со всеми фентифлюшками. Может лучше ими воспользоваться?

В восьмерке в ядре такое поле есть. Им и пользуюсь.

Аватар пользователя Алексей Дёмин
Алексей Дёмин 1 месяц назад

Как ответили тут https://t.me/drupal_beginner

Andrey Postnikov, [21.04.18 13:35]
> Currently this module only works with Field type

Andrey Postnikov, [21.04.18 13:37]
они еще не сделали свой тип элемента, костылят https://cgit.drupalcode.org/masked_input/tree/src/Plugin/Field/FieldWidg...

Решил свой костыль придумать, чтобы к кастомному полю маску прикрутить.
Добавил класс masked к полю

<?php    $form['contacts']['field_contact_person_phone'] = [
      
'#type' => 'tel',
*
      
'#attributes' => [
        
'class' => [
          
'masked'
        
]
      ],
      
'#attached' => [
        
'library' => [
          
'masked_input/drupal.masked_input',
        ],
      ],
    ];
?>

и решил прикрутить руками:

(function($) {
  Drupal.behaviors.mask = {
    attach: function(context, settings) {
      $('.form-tel.masked').mask('+7(999)999-99-99')
    }
  }
})(jQuery);

Но так с наскоку не получилось, он ругается что

TypeError: config is undefined[Learn More]
masked_input.js:9:1

вот ссылка на masked_input.js

Как победить этот случай?