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

Тип поля email создает элемент ввода для адреса электронной почты. В отличие от стандартного текстового поля, оно использует HTML5-атрибут type="email", что обеспечивает:

  • Нативную валидацию формата email в современных браузерах.
  • Оптимизированную клавиатуру на мобильных устройствах (с быстрым доступом к @ и .).
  • Серверную проверку данных при отправке формы.
Joomla 3.x Joomla 4.x Joomla 5.x Joomla 6.x

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

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

Атрибут Тип Описание
name string Обязательный. Уникальный идентификатор поля. Используется для получения данных в PHP ($form->getValue('name')) и генерации HTML-атрибута name. Должен содержать только латинские буквы, цифры и подчеркивания.
type string Обязательный. Тип поля. Для данного случая значение всегда email. Определяет рендеринг как , что включает нативную HTML5-валидацию и мобильную клавиатуру.
label string Заголовок поля, отображаемый рядом с input. Поддерживает строки перевода (например, JGLOBAL_EMAIL). В Joomla 4-6 автоматически связывается с полем через атрибуты доступности (ARIA).
required boolean Если true, поле становится обязательным. Добавляет звездочку (*) к лейблу и атрибут required в HTML. В Joomla 4-6 также добавляет aria-required="true" для скринридеров.
validate string Имя правила валидации. Для email используйте validate="email". Обеспечивает проверку формата на сервере и клиенте.
filter string Фильтр очистки данных перед сохранением в базу. Критически важно для безопасности. Рекомендуется filter="email", который удалит все недопустимые символы. Если не указан, данные могут сохраниться «как есть», что опасно.
default string Значение по умолчанию, которое подставляется в поле при создании новой записи (если поле пустое). Может быть строкой или константой перевода.
hint string Текст подсказки внутри поля (HTML5 placeholder). Joomla 4-6: работает нативно. Joomla 3: не поддерживается стандартными макетами (требуется переопределение шаблона или JS-хак).
description string Дополнительное описание. Joomla 3: выводилось как всплывающая подсказка (tooltip). Joomla 4-6: поведение зависит от макета формы (часто игнорируется или выводится мелким текстом под полем). Для кратких подсказок лучше использовать hint.
class string CSS-классы для тега . В Joomla 4-6 базовые классы (например, form-control) добавляются автоматически, но здесь можно добавить свои кастомные классы.
labelclass string CSS-классы для тега
size integer Видимая ширина поля в символах (HTML5 атрибут size). В современных адаптивных шаблонах (J4-J6) ширину лучше контролировать через CSS/Bootstrap, а не этот атрибут.
maxlength integer Максимальное количество символов, разрешенных для ввода. Браузер блокирует ввод лишнего, сервер также обрезает данные при фильтрации.
readonly boolean Если true, поле нельзя редактировать, но его значение отправляется на сервер при отправке формы. Используйте для отображения системных данных, которые нельзя менять, но нужно сохранять.
disabled boolean Если true, поле заблокировано и визуально затемнено. Его значение НЕ отправляется на сервер.
autocomplete string Управление автозаполнением браузера. Значения: off, on, email, new-email. В Joomla 6 рекомендуется явно указывать autocomplete="email" для улучшения UX и работы менеджеров паролей.
autofocus boolean Если true, фокус ввода устанавливается на поле сразу после загрузки страницы. Только одно поле на странице может иметь этот атрибут.
showon string Условие динамического отображения поля. Пример: showon="send_copy:1" (показать, если поле send_copy равно 1). Работает в J3 (через JS) и нативно в J4-J6. Очень мощный инструмент для сложных форм.
spellcheck boolean Включает (true) или выключает (false) проверку орфографии. Для email рекомендуется false, чтобы браузер не подчеркивал адреса красным.
pattern string Регулярное выражение (Regex) для дополнительной клиентской валидации (HTML5). Дополняет validate, но не заменяет серверную проверку.

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

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

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

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

Добавьте этот код внутрь тега вашего XML-манифеста. Атрибут type="email" автоматически активирует проверку формата адреса электронной почты браузером и адаптирует клавиатуру на мобильных устройствах.

<field
       name="email"
       type="email"
       label="Электронная почта"
       description="Введите вашу электронную почту"/>

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

Для получения данных из полей формы в Joomla используется объект JInput. Он обеспечивает безопасную фильтрацию входных данных. Ниже приведены примеры получения адреса электронной почты для современных версий (J4/J5/J6) и устаревших (J3). Обратите внимание на использование метода get() с фильтром 'email'. Этот фильтр автоматически удаляет недопустимые символы и проверяет базовый формат адреса.

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

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

// Получаем email. 
// Третий аргумент 'email' применяет встроенный фильтр очистки
$myEmail = $input->get('my_email_field', '', 'email');


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

// ИЛИ старым способом (не рекомендуется, но встречается в легаси):
$myEmail = JRequest::getVar('my_email_field', '', 'get', 'email');


// --- БЕЗОПАСНЫЙ ВЫВОД ---
// Всегда экранируйте вывод для защиты от XSS
echo htmlspecialchars($myEmail, ENT_QUOTES, 'UTF-8');

// Пример использования в ссылке mailto:
if (!empty($myEmail)) {
    echo '<a href="mailto:' . htmlspecialchars($myEmail, ENT_QUOTES, 'UTF-8') . '">' 
         . htmlspecialchars($myEmail, ENT_QUOTES, 'UTF-8') . '</a>';
}

В приведенных примерах используется фильтр 'email' в качестве третьего аргумента метода get(). Это критически важно для безопасности: фильтр автоматически удаляет любые символы, не соответствующие стандарту адреса электронной почты, предотвращая попытки инъекций. Для вывода данных на странице всегда используйте функцию htmlspecialchars(), чтобы избежать XSS-атак. Если поле может быть пустым, рекомендуется добавить проверку !empty($myEmail) перед использованием значения.

Совет: Всегда явно указывайте атрибут filter="email" в XML-разметке. Хотя тип поля type="email" обеспечивает проверку формата на стороне клиента (в браузере), серверный фильтр необходим для очистки данных перед сохранением в базу, что защищает ваш сайт от некорректных записей и потенциальных уязвимостей.

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

  • Отсутствие метода getEmail(): В объекте JInput нет специального метода $input->getEmail(), в отличие от $input->getUrl() или $input->getInt(). Разработчики часто тратят время на его поиск. Правильный способ получения данных, это использовать универсальный метод с указанием фильтра: $input->get('field_name', '', 'email').
  • Разница между readonly и disabled: Если вы установите атрибут disabled="true", значение поля не будет отправлено на сервер при сабмите формы, и данные не сохранятся. Если ваша цель запретить редактирование, но сохранить значение в базе, обязательно используйте readonly="true". Это частая ошибка при настройке форм профиля.
  • Особенности hint в Joomla 3: Атрибут hint (текст-подсказка внутри поля) работает нативно только в Joomla 4 и выше. В Joomla 3 стандартные макеты игнорируют этот атрибут. Если поддержка J3 критична, подсказку придется реализовывать через переопределение макета (layout override) или JavaScript, иначе пользователь её не увидит.
0 items Корзина
Консультация по услуге:

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