Стандартный тип поля Joomla XML - Tel

Тип поля tel предназначен для ввода телефонных номеров. При рендеринге формы это поле генерирует стандартный HTML5-элемент <input type="tel" />. Основная особенность типа — улучшение пользовательского опыта на мобильных устройствах: при активации поля браузер автоматически отображает цифровую клавиатуру, оптимизированную для ввода телефонных номеров. Также наличие специфического типа позволяет браузерам и менеджерам паролей корректно распознавать поле для функции автозаполнения контактных данных.

Joomla 3.x Joomla 4.x Joomla 5.x Joomla 6.x

Атрибуты поля

Ниже приведены основные атрибуты, поддерживаемые типом поля . Используйте их внутри тега <field> вашего XML-манифеста.

Атрибут Тип Описание
name string Обязательно. Уникальный системный идентификатор поля. Используется для получения значения в PHP ($input->get('name')).
type string Обязательно. Должно быть равно "tel". Определяет тип поля и его поведение.
label string Заголовок поля, видимый пользователю. Может быть языковой константой (например, COM_EXAMPLE_PHONE_LABEL).
description string Описание поля. В Joomla 3 — всплывающая подсказка; в Joomla 4/5/6 — текст под полем.
required boolean Делает поле обязательным для заполнения. Принимает значения true или false.
pattern string Регулярное выражение для проверки формата телефона. Критически важен, так как встроенной валидации нет. Пример: [\+]?[0-9\s\-\(\)]+.
hint string Текст-подсказка внутри пустого поля (placeholder). Исчезает при начале ввода.
default string Значение по умолчанию, отображаемое при создании новой записи.
autocomplete string Управляет автозаполнением. Рекомендуемое значение: "tel" для подстановки номеров из контактов браузера.
showon string Условное отображение поля. Поле показывается только если другое поле соответствует условию. Пример: showon="country:RU".
filter string Серверная фильтрация данных. Для телефонов рекомендуется "cmd" (очистка) или "string" (сохранение формата).
maxlength integer Максимальное количество символов, которое можно ввести.
size integer Видимая ширина поля в символах. Не влияет на максимальную длину ввода.
class string Дополнительные CSS-классы для стилизации (например, классы Bootstrap).
readonly boolean Поле доступно только для чтения. Значение нельзя изменить, но оно отправляется на сервер.
disabled boolean Поле полностью заблокировано. Не принимает фокус и не отправляется на сервер.
autofocus boolean Автоматически устанавливает фокус на поле после загрузки страницы.
spellcheck boolean Включает/отключает проверку орфографии. Для телефонов рекомендуется false.

Визуальные примеры

Ниже представлены скриншоты отображения поля в разных версиях Joomla и темах административной панели.

Joomla 3 Isis
Поле типа Tel в настройках Joomla 3.x (шаблон админки Isis)
Классический вид поля в шаблоне Isis.
Joomla 4 / 5 / 6 Cassiopeia (Светлая)
Визуальное отображение поля Tel в Joomla 4/5/6 - светлая тема админки Cassiopeia
Современный дизайн Cassiopeia. Светлая тема.
Joomla 4 / 5 / 6 Cassiopeia (Темная)
Визуальное отображение поля Tel в Joomla 4/5/6 - темная тема админки Cassiopeia
Темная тема админки. Контрастный текст и темный фон.

Пример использования в XML

Добавьте этот код внутрь тега формы в вашем XML-файле. Атрибут type="tel" определяет семантику поля как телефонного номера, что позволяет браузерам корректно обрабатывать ввод (включая автозаполнение и адаптацию интерфейса ввода).

<field
       name="phone"
       type="tel"
       label="Номер телефона"
       description="Введите номер телефона"/>

Получение значения в PHP

Для извлечения значения телефона используйте объект ввода приложения (Input). Поскольку телефонный номер является строкой, применяются методы getString() (для сохранения исходного форматирования) или getCmd() (для очистки от спецсимволов). В примере ниже показано корректное получение данных с учетом различий в инициализации объекта Input между версиями Joomla 3 и Joomla 4/5/6.

// --- ВАРИАНТ ДЛЯ JOOMLA 4 / 5 / 6 (Современный) ---
use Joomla\CMS\Factory;

// Получаем объект ввода через Factory (рекомендуемый способ в MVC)
$input = Factory::getApplication()->input;

// getString() сохраняет пробелы и скобки (для отображения)
$phoneDisplay = $input->getString('phone_field', '');

// getCmd() удаляет лишние символы, оставляя только цифры, +, -, . (для БД)
$phoneClean = $input->getCmd('phone_field', '');


// --- ВАРИАНТ ДЛЯ JOOMLA 3.x (Устаревший) ---
// В J3 используется класс JFactory
$input = JFactory::getApplication()->input;

// Аналогичная логика фильтров
$phoneDisplay = $input->getString('phone_field', '');
$phoneClean = $input->getCmd('phone_field', '');

// ИЛИ старым способом (не рекомендуется):
// $phone = JRequest::getVar('phone_field', '', 'post', 'cmd');


// --- ВАЖНОЕ ПРИМЕЧАНИЕ ПО ФИЛЬТРАЦИИ ---
// Для телефонных номеров НЕ используйте getInt(), так как он обрежет номер 
// при наличии символов '+', '(' или пробелов.
// Используйте getString() для вывода и getCmd() для сохранения/поиска.

// Безопасный вывод на экран (защита от XSS):
echo htmlspecialchars($phoneDisplay, ENT_QUOTES, 'UTF-8');

Для телефонных номеров критически важно не использовать метод getInt(), так как он обрежет данные из-за наличия символов +, скобок или пробелов. Вместо этого применяйте getString() для сохранения исходного форматирования при выводе или getCmd() для очистки номера от лишних символов перед сохранением в базу данных. При отображении значения на странице всегда используйте htmlspecialchars() для защиты от XSS-уязвимостей.

Совет: Для улучшения пользовательского опыта на мобильных устройствах рекомендуется добавлять атрибут autocomplete="tel", который поможет браузерам автоматически подставлять сохраненные номера. Если требуется строгая проверка формата ввода, используйте атрибут pattern с регулярным выражением, так как стандартный тип tel не выполняет автоматическую валидацию данных на стороне клиента.

Подводные камни

  • Отсутствие автоматической валидации: В отличие от поля email или url, тип tel не проверяет формат введенных данных на стороне браузера. Пользователь может ввести буквы или произвольные символы, и форма будет считаться валидной. Для строгой проверки обязательно используйте атрибут pattern с регулярным выражением.
  • Особенности фильтрации в PHP: Никогда не используйте метод $input->getInt() для получения телефона, так как он обрежет номер при первом же спецсимволе (например, + или пробеле). Для сохранения форматирования применяйте getString(), а для очистки номера перед записью в базу — getCmd().
  • Различия в мобильных клавиатурах: Поведение цифровой клавиатуры на iOS и Android может отличаться в зависимости от версии ОС и браузера. Атрибут type="tel" является лишь рекомендацией для браузера, но не гарантирует появление исключительно цифровой панели ввода во всех возможных сценариях.
0 items Корзина
Консультация по услуге:

Вам нужно оказать услугу по формированию файла с XML полями для Joomla? Заполните форму ниже с информацией о необходимых вам данных и получите цену готового файла с полями Joomla XML