URL и ссылки
Оглавление
1.
Введение
2.
Список методов
3.
Примеры использования
Введение #
К оглавлению
Для генерации URI и ссылок в ABC-фреймворке имеется сервис "UriManager". Получить его можно как обычно:
1
2
3
$uriManager = Abc::newService(ABC::URI_MANAGER);
Глобально настроить сервис можно в любом из конфигурационных файлов в секции "uri_manager". Имеются следующие настройки:
1
2
3
4
5
6
7
8
9
10
11
12
13
// Вид URI в ссылках
'uri_manager' => [
// ЧПУ (Человеко Приятный Урл)
'pretty' => true,
// Показать/скрыть имя скрипта
'show_script' => false,
// HTTPS
'https' => false,
// Абсолютный путь
'absolute' => true,
],
Класс предоставляет следующие публичные методы и функции #
К оглавлению
К списку методов
Генерирует строку URI.
Этот метод генерирует строку URI согласно выбранному режиму или глобальным настройкам.
К списку методов
Генерирует ссылку
Метод генерирует тег <a> с URI согласно правилам, а также дополнительными параметрами.
К списку методов
Активизирует ссылку.
Возвращает класс CSS, если текущий URI совпадает с настройками строки возврата.
Кроме того, для удобной работы в шаблонах имеются функции-обертки для методов.
Эти функции доступны и в шаблонах
встроенного шаблонизатора.
* Режим генерации URI.
Опция доступна только для внутренних ссылок.
Если передано булево значение, то будет выбран один из двух режимов:
1.
true - ссылка будет абсолютной
2.
false - ссылка будет относительной
Если передан массив, то возможны следующие настройки:
1.
'pretty' =>
true|false (включает|отключает ЧПУ)
2.
'https' =>
true|false (выбор протокола HTTPS|HTTP)
3.
'absolute' =>
true|false (делает URI абсолютным или относительным)
4.
'show_script' =>
true|false (показывает|скрывает имя текущего скрипта)
** Дополнительные параметры (массив).
Опция доступна только для внутренних ссылок.
Все настройки опциональны (не обязательны).
1.
'attribute' =>
string (аттрибуты тега
<a>)
2.
'mode' =>
boolean|array (
pежим генерации URI)
3. 'activeСss' => string (класс или стиль CSS, который будет возвращен в случае совпадения маски с текущим URL)
4.
'returnUrl' =>
string (маска URI возврата)
*** В маске возврата используются простые правила:
1. Первым всегда идет название контроллера.
2. Вторым - действия (
action). В них
a. простой текст - полное совпадение,
б. текст в бричках, разделенных прямой чертой - по принципу "
или" (только для экшенов).
Примеры использования. #
К оглавлению
Генерация URI в скриптах
Из GET-параметров:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Получаем сервис
$uriManager = Abc::newService(ABC::URI_MANAGER);
// URI из строки с GET-параметрами
$uri = $uriManager->createUri('?controller=main&action=index&id=5');
// Результат при включенном ЧПУ
// /main/index/id/5
// При выключеном
// ?controller=main&action=index&id=5
// URI из строки с GET-параметрами (абсолютная ссылка)
$uri = $uriManager->createUri('?controller=main&action=index&id=5', true);
// Результат при включенном ЧПУ
// http://abc-framework/main/index/id/5
// При выключенном
// http://abc-framework?controller=main&action=index&id=5
Генерация URI из ЧПУ строки:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Получаем сервис
$uriManager = Abc::newService(ABC::URI_MANAGER);
// URI из ЧПУ строки
$uri = $uriManager->createUri('/main/index/id/5');
// Результат при включенном ЧПУ
// /main/index/id/5
// При выключенном
// ?controller=main&action=index&id=5
// URI из строки с GET-параметрами (абсолютная ссылка)
$uri = $uriManager->createUri('/main/index/id/5', true);
// Результат при включенном ЧПУ
// http://abc-framework/main/index/id/5
// При выключенном
// http://abc-framework?controller=main&action=index&id=5
Генерация URI с использованием правил роутинга:
1
2
3
4
5
6
7
8
9
10
11
12
// Получаем сервис
$uriManager = Abc::newService(ABC::URI_MANAGER);
// URI из ЧПУ строки с локальной настройкой
$uri = $uriManager->createUri('/docs/inside', ['pretty' => false]);
// Если есть такое правило маршрутизации
// 'docs/<post>' => 'docs/index',
// то при включенном ЧПУ результат:
// /docs/inside
// При выключенном
// ?controller=docs&action=index&post=inside
Генерация URI в шаблонах.
Встроенный шаблонизатор (простая ссылка):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--// hello -->
<a href="{createUri('/docs/template')}">{$hello}</a>
<!--
Результатом будет ссылка вида
<a href="/docs/template">Привет, Мир!</a>
Либо, при отключенном ЧПУ и заданном правиле маршрутизации
'docs/<post>' => 'main/index',
вот такого вида
<a href="?controller=main&action=index&post=template">Привет, Мир!</a>
-->
<!--// hello end -->
Встроенный шаблонизатор (ссылка с активацией):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--// hello -->
<a {activeLink('main/<index|second>')} href="{createUri('/main/index/id/5')}">Первая</a>
<br />
<a href="{createUri('/main/second/id/10')}">Вторая</a>
<!--
При переходе по любой из этих ссылок, первая будет активна:
<a class="active" href="/main/index/id/5">Первая</a>
-->
<!--// hello end -->
Эти же функции доступны в нативном шаблонизаторе.
1
2
3
<a href="<?=createUri('/main/index/id/5');?>">Первая</a>
Генерация ссылки в нативном шаблонизаторе:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?=createLink('main/index/id/5', 'ссылка', [
'attribute' => 'onclick="alert(\'Ура\')"',
'returnUri' => 'main/index',
'activeCss' => 'style="color:red"',
'mode' => true
]); ?>
<!--
Будет сгенерирована ссылка в виде
<a href="http://abc-framework/main/index/id/5"
onclick="alert('Ура')"style="color:red" >ссылка</a>
-->
Эта функция доступна и во встроенном шаблонизаторе, но использовать её
там не рекомендуется, так как код становится плохо читаемым.