MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Как в Yii создавать ссылки, используя внутренний маршрут
29.09.2014
19:39
Текстовые метки: Yii, ссылка, внутренний маршрут, URL
Раздел: Компьютер - Программирование - Язык PHP - Yii

Как в Yii создавать ссылки, используя внутренний маршрут

Внутренний маршрут

Каждому контроллеру и его действию соответствиет маршрут в формате:

controllerID/actionID

или

moduleID/controllerID/actionID

Например, метод actionPage контроллера WebsiteController будет иметь маршрут:

website/page

Краткая справка

Идентификатор контроллера (controllerID)

Чтобы получить идентификатор контроллера, нужно от его имени отбросить постфикс Controller, а первую большую букву заменить на строчную.

Идентификатор действия (actionID)

Чтобы получить идентификатор действия, следует от имени метода отбросить префикс action и первую большую букву заменить на строчную.

Создание ссылок, используя внутренний маршрут

Ссылка создается с помощью метода CHtml::link(). Данный метод может работать как со строкой с URL-ом, так и с массивом, содержащим внутренний маршрут.

Формирование ссылки через строку с URL:

echo CHtml::link('Текст ссылки', 'http://site.ru');

Данная команда сформирует ссылку:

<a href="http://site.ru">Текст ссылки</a>

Но главный функционал CHtml::link() состоит в формировании ссылки из массива с внутренним маршрутом.

Пример формрования простой ссылки с внутренним маршрутом website/index:

echo CHtml::link('Текст ссылки', array('website/index'));

Пример формрования ссылки с внутренним маршрутом website/index и переменными name и age, которые должны попасть в действие index:

echo CHtml::link('Текст ссылки', array('website/index', 'name'=>'Vasya', 'age'=>'25'));

Метод контроллера createUrl()

Так же, можно создавать ссылки через встроенный в контроллер метод createUrl(). Однако следует помнить, что данный метод только генерирует строку с URL, а не генерирует строку с полным <a href...> линком.

$this->createUrl('Текст ссылки', array('внутренний/маршрут'));

особенность в том, что в качетсве маршрута можно указыть только действие (будет подствлен идентификатор текущего контроллера).

Метод приложения createUrl()

Вне контроллера можно использовать метод приложения createURL:

$Yii::app()->createUrl('Текст ссылки', array('внутренний/маршрут')); 

Здесь так же следует помнить, что данный метод только генерирует строку с URL, а не генерирует строку с полным <a href...> линком.

Так же в этом разделе:
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования