Стандартный тип поля Joomla XML - URL
Визуальные примеры
Ниже представлены скриншоты отображения поля в разных версиях Joomla и темах административной панели.
Пример использования в XML
Добавьте этот код внутрь тега вашего XML-манифеста. Атрибут type="url" автоматически активирует валидацию ссылки браузером.
<field
name="url"
type="url"
label="URL адрес"
description="Введите необходимый URL адрес"/>
Получение значения в PHP
Для получения данных из полей формы в Joomla используется объект JInput. Он обеспечивает безопасную фильтрацию входных данных. Ниже приведены примеры получения URL-адреса для современных версий (J4/J5/J6) и устаревших (J3). Обратите внимание на использование метода getUrl(), который автоматически проверяет наличие протокола и корректность ссылки. Также рассмотрен важный нюанс обработки кириллических доменов (IDN).
// --- ВАРИАНТ ДЛЯ JOOMLA 4 / 5 / 6 (Современный) ---
use Joomla\CMS\Factory;
// Получаем объект ввода через Factory (рекомендуемый способ в MVC)
$input = Factory::getApplication()->input;
// getUrl() строго проверяет протокол и безопасность ссылки
$myUrl = $input->getUrl('my_url_field', '');
// --- ВАРИАНТ ДЛЯ JOOMLA 3.x (Устаревший) ---
// В J3 использовался JFactory или JRequest
$input = JFactory::getApplication()->input;
$myUrl = $input->get('my_url_field', '', 'url');
// ИЛИ старым способом:
$myUrl = JRequest::getVar('my_url_field', '', 'get', 'url');
// --- ОБРАБОТКА IDN (КИРИЛЛИЧЕСКИЕ ДОМЕНЫ) ---
// Если URL содержит кириллицу (например, сайт.рф), он хранится как Punycode.
// Для вывода в читаемом виде (UTF-8) используйте преобразование:
// Для J4/J5/J6:
use Joomla\String\Punycode;
$displayUrl = Punycode::urlToUTF8($myUrl);
// Для J3:
$displayUrl = \JStringPunycode::urlToUTF8($myUrl);
// Вывод ссылки
echo '<a href="' . htmlspecialchars($myUrl) . '">' . htmlspecialchars($displayUrl) . '</a>';
В Joomla 4+ класс JFactory заменен на Joomla\CMS\Factory. Метод getUrl() является наиболее надежным способом получения ссылок, так как он отбрасывает некорректные данные.
Важно про IDN: Кириллические домены (IDN) в базе данных Joomla хранятся в формате Punycode (xn--...). Без преобразования через Punycode::urlToUTF8() пользователь увидит непонятный набор символов вместо красивого адреса сайта. Всегда используйте htmlspecialchars() при выводе в HTML для защиты от XSS.
Совет: Для полей типа URL всегда используйте фильтр getUrl(). Если вы поддерживаете Joomla 3, убедитесь, что экранируете вывод. Для IDN доменов преобразование в UTF-8 критично для правильного отображения ссылки пользователю.
Подводные камни
-
Требование протокола: По умолчанию поле использует HTML5 тип . Это означает, что браузер и Joomla потребуют наличия протокола (http:// или https://). Ввод просто example.com может вызвать ошибку валидации в браузере или сохранить некорректную ссылку.
-
IDN домены (Кириллица): При вводе доменов на кириллице (например, сайт.рф или сайт.бел) убедитесь, что ваша версия Joomla корректно обрабатывает кодировку. В некоторых случаях может потребоваться преобразование в Punycode (xn--d1acufc.xn--p1ai) для корректной работы в атрибуте href.
-
Ограничение длины (255 символов): Если в вашей базе данных колонка для этого поля имеет тип VARCHAR(255), длинные URL с GET-параметрами могут быть обрезаны при сохранении. Для сложных ссылок рекомендуется использовать тип колонки TEXT или VARCHAR(500+).
-
Фильтрация в PHP: При получении значения через $input->getUrl() Joomla применяет строгую фильтрацию. Если ссылка будет сочтена невалидной (например, отсутствует протокол), метод может вернуть пустое значение. Для более мягкого получения данных используйте $input->getString() и проверяйте наличие протокола вручную.