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,
                ],




Класс предоставляет следующие публичные методы и функции #
К оглавлению

1 createUri() Генерирует строку URI.
2 createLink() Генерирует ссылку
3 activeLink() Активизирует ссылку
4 createUri() (Функция) Генерирует строку URI.
5 createLink() (Функция) Генерирует ссылку
6 activeLink() (Функция) Активизирует ссылку




createUri() public method
К списку методов

Генерирует строку URI.

Этот метод генерирует строку URI согласно выбранному режиму или глобальным настройкам.

public UriManager::createUri ( $queryString, $mode false )
$queryString string Строка запроса.
$mode boolean|array Режим генерации URI*
return string Строка URI согласно настройкам.


createLink() public method
К списку методов

Генерирует ссылку

Метод генерирует тег <a> с URI согласно правилам, а также дополнительными параметрами.

public UriManager::createLink ( $queryString, $text, $param array )
$queryString string Строка запроса.
$text string Текст ссылки.
$param array Дополнительные параметры**
return string Готовый тег <a>.


activeLink() public method
К списку методов

Активизирует ссылку.

Возвращает класс CSS, если текущий URI совпадает с настройками строки возврата.

public UriManager::activeLink ( $returnUrl, $activeСss 'class="active"' )
$returnUrl string Маска возврата***
$activeСss string Стиль CSS.
return string Стиль CSS.




Кроме того, для удобной работы в шаблонах имеются функции-обертки для методов.

Эти функции доступны и в шаблонах встроенного шаблонизатора.

createUri() public function
К списку методов

Генерирует строку URI.

Функция-обертка для метода  public UriManager::createUri ().

createUri ( $queryString, $mode false )
$queryString string Строка запроса.
$mode boolean|array Режим генерации URI*
return string Строка URI согласно настройкам.


createLink() public function
К списку методов

Генерирует ссылку.

Функция-обертка для метода  public UriManager::createLink ().

createLink ( $queryString, $text, $param array )
$queryString string Строка запроса.
$text string Текст ссылки.
$param array Дополнительные параметры**.
return string Готовый тег <a>.


activeLink() public function
К списку методов

Активизирует ссылку.

Функция-обертка для метода public UriManager::activeLink ().

activeLink ( $returnUrl, $activeСss 'class="active"' )
$returnUrl string Маска возврата***.
$activeСss string Стиль CSS.
return string Стиль CSS.





* Режим генерации 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>

-->



Эта функция доступна и во встроенном шаблонизаторе, но использовать её там не рекомендуется, так как код становится плохо читаемым.