|
|
@ -1,13 +1,13 @@ |
|
|
|
Url хелпер |
|
|
|
Url хелпер |
|
|
|
========== |
|
|
|
========== |
|
|
|
|
|
|
|
|
|
|
|
Url хелпер предоставляет набор статических методов для управления урлами. |
|
|
|
Url хелпер предоставляет набор статических методов для управления URL. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Получение общих урлов <span id="getting-common-urls"></span> |
|
|
|
## Получение общих URL <span id="getting-common-urls"></span> |
|
|
|
|
|
|
|
|
|
|
|
Вы можете использовать два метода получения общих урлов: домашний Урл (Home) и базовый Урл (Base) текущего запроса. |
|
|
|
Вы можете использовать два метода получения общих URL: домашний URL (Home) и базовый URL (Base) текущего запроса. |
|
|
|
Используйте следующий код, чтобы получить домашний Урл: |
|
|
|
Используйте следующий код, чтобы получить домашний URL: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
$relativeHomeUrl = Url::home(); |
|
|
|
$relativeHomeUrl = Url::home(); |
|
|
@ -15,10 +15,10 @@ $absoluteHomeUrl = Url::home(true); |
|
|
|
$httpsAbsoluteHomeUrl = Url::home('https'); |
|
|
|
$httpsAbsoluteHomeUrl = Url::home('https'); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Если вы не передали параметров, то получите относительный урл. Вы можете передать `true`, чтобы получить абсолютный урл |
|
|
|
Если вы не передали параметров, то получите относительный URL. Вы можете передать `true`, чтобы получить абсолютный URL |
|
|
|
для текущего протокола или явно указать протокол (`https`, `http`). |
|
|
|
для текущего протокола или явно указать протокол (`https`, `http`). |
|
|
|
|
|
|
|
|
|
|
|
Чтобы получить базовый Урл текущего запроса: |
|
|
|
Чтобы получить базовый URL текущего запроса: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
$relativeBaseUrl = Url::base(); |
|
|
|
$relativeBaseUrl = Url::base(); |
|
|
@ -28,32 +28,32 @@ $httpsAbsoluteBaseUrl = Url::base('https'); |
|
|
|
|
|
|
|
|
|
|
|
Единственный параметр данного метода работает также как и `Url::home()`. |
|
|
|
Единственный параметр данного метода работает также как и `Url::home()`. |
|
|
|
|
|
|
|
|
|
|
|
## Создание Урлов <span id="creating-urls"></span> |
|
|
|
## Создание URL <span id="creating-urls"></span> |
|
|
|
|
|
|
|
|
|
|
|
Чтобы создать урл для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]]. |
|
|
|
Чтобы создать URL для соответствующего роута используйте метод `Url::toRoute()`. Метод использует [[\yii\web\UrlManager]]. |
|
|
|
Для того чтобы создать урл: |
|
|
|
Для того чтобы создать URL: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
$url = Url::toRoute(['product/view', 'id' => 42]); |
|
|
|
$url = Url::toRoute(['product/view', 'id' => 42]); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Вы можете задать роут строкой, например, `site/index`. А также вы можете использовать массив, если хотите задать |
|
|
|
Вы можете задать роут строкой, например, `site/index`. А также вы можете использовать массив, если хотите задать |
|
|
|
дополнительные параметры запроса для урла. Формат массива должен быть следующим: |
|
|
|
дополнительные параметры запроса для URL. Формат массива должен быть следующим: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
// сгенерирует: /index.php?r=site/index¶m1=value1¶m2=value2 |
|
|
|
// сгенерирует: /index.php?r=site/index¶m1=value1¶m2=value2 |
|
|
|
['site/index', 'param1' => 'value1', 'param2' => 'value2'] |
|
|
|
['site/index', 'param1' => 'value1', 'param2' => 'value2'] |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Если вы хотите создать урл с якорем, то вы можете использовать параметр массива с ключом `#`. Например: |
|
|
|
Если вы хотите создать URL с якорем, то вы можете использовать параметр массива с ключом `#`. Например: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
// сгенерирует: /index.php?r=site/index¶m1=value1#name |
|
|
|
// сгенерирует: /index.php?r=site/index¶m1=value1#name |
|
|
|
['site/index', 'param1' => 'value1', '#' => 'name'] |
|
|
|
['site/index', 'param1' => 'value1', '#' => 'name'] |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Роут может быть и абсолютным, и относительным. Абсолютный урл начинается со слеша (например, `/site/index`), |
|
|
|
Роут может быть и абсолютным, и относительным. Абсолютный URL начинается со слеша (например, `/site/index`), |
|
|
|
относительный - без (например, `site/index` or `index`). Относительный урл будет сконвертирован в абсолютный по следующим |
|
|
|
относительный - без (например, `site/index` or `index`). Относительный URL будет сконвертирован в абсолютный по следующим |
|
|
|
правилам: |
|
|
|
правилам: |
|
|
|
|
|
|
|
|
|
|
|
- Если роут пустая строка, то будет использовано текущее значение [[\yii\web\Controller::route|route]]; |
|
|
|
- Если роут пустая строка, то будет использовано текущее значение [[\yii\web\Controller::route|route]]; |
|
|
@ -86,17 +86,17 @@ echo Url::toRoute('site/index', 'https'); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Другой метод `Url::to()` очень похож на [[toRoute()]]. Единственное отличие: входным параметром должен быть массив. |
|
|
|
Другой метод `Url::to()` очень похож на [[toRoute()]]. Единственное отличие: входным параметром должен быть массив. |
|
|
|
Если будет передана строка, то она будет воспринята как урл. |
|
|
|
Если будет передана строка, то она будет воспринята как URL. |
|
|
|
|
|
|
|
|
|
|
|
Первый аргумент может быть: |
|
|
|
Первый аргумент может быть: |
|
|
|
|
|
|
|
|
|
|
|
- массивом: будет вызван [[toRoute()]], чтобы сгенерировать урл. Например: `['site/index']`, `['post/index', 'page' => 2]`. |
|
|
|
- массивом: будет вызван [[toRoute()]], чтобы сгенерировать URL. Например: `['site/index']`, `['post/index', 'page' => 2]`. |
|
|
|
В разделе [[toRoute()]] подробно описано как задавать роут; |
|
|
|
В разделе [[toRoute()]] подробно описано как задавать роут; |
|
|
|
- Строка, начинающася с `@`, будет обработана как псевдоним. Будет возвращено соответствующее значение псевдонима; |
|
|
|
- Строка, начинающася с `@`, будет обработана как псевдоним. Будет возвращено соответствующее значение псевдонима; |
|
|
|
- Пустая строка: вернет текущий урл; |
|
|
|
- Пустая строка: вернет текущий URL; |
|
|
|
- Обычная строка: вернет строку без имзенений |
|
|
|
- Обычная строка: вернет строку без имзенений |
|
|
|
|
|
|
|
|
|
|
|
Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный урл будет с протоколом |
|
|
|
Когда у метода задан второй параметр `$scheme` (строка или true), то сгенерированный URL будет с протоколом |
|
|
|
(полученным из [[\yii\web\UrlManager::hostInfo]]). Если в `$url` указан протокол, то его значение будет заменено. |
|
|
|
(полученным из [[\yii\web\UrlManager::hostInfo]]). Если в `$url` указан протокол, то его значение будет заменено. |
|
|
|
|
|
|
|
|
|
|
|
Пример использования: |
|
|
|
Пример использования: |
|
|
@ -111,7 +111,7 @@ echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']); |
|
|
|
// /index.php?r=post/edit&id=100 псевдоним "@postEdit" задан как "post/edit" |
|
|
|
// /index.php?r=post/edit&id=100 псевдоним "@postEdit" задан как "post/edit" |
|
|
|
echo Url::to(['@postEdit', 'id' => 100]); |
|
|
|
echo Url::to(['@postEdit', 'id' => 100]); |
|
|
|
|
|
|
|
|
|
|
|
// Текущий урл |
|
|
|
// Текущий URL |
|
|
|
echo Url::to(); |
|
|
|
echo Url::to(); |
|
|
|
|
|
|
|
|
|
|
|
// /images/logo.gif |
|
|
|
// /images/logo.gif |
|
|
@ -127,7 +127,7 @@ echo Url::to('@web/images/logo.gif', true); |
|
|
|
echo Url::to('@web/images/logo.gif', 'https'); |
|
|
|
echo Url::to('@web/images/logo.gif', 'https'); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Начиная с версии 2.0.3, вы можете использовать [[yii\helpers\Url::current()]], чтобы создавать урл на основе текущего |
|
|
|
Начиная с версии 2.0.3, вы можете использовать [[yii\helpers\Url::current()]], чтобы создавать URL на основе текущего |
|
|
|
запрошенного роута и его GET-параметров. Вы можете изменить, удалить или добавить новые GET-параметры передав в метод |
|
|
|
запрошенного роута и его GET-параметров. Вы можете изменить, удалить или добавить новые GET-параметры передав в метод |
|
|
|
параметр `$params`. Например: |
|
|
|
параметр `$params`. Например: |
|
|
|
|
|
|
|
|
|
|
@ -144,32 +144,32 @@ echo Url::current(['id' => 100]); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Запоминание урлов <span id="remember-urls"></span> |
|
|
|
## Запоминание URL <span id="remember-urls"></span> |
|
|
|
|
|
|
|
|
|
|
|
Существуют задачи, когда вам необходимо запомнить урл и потом использовать его в процессе одного или нескольких |
|
|
|
Существуют задачи, когда вам необходимо запомнить URL и потом использовать его в процессе одного или нескольких |
|
|
|
последовательных запросов. Это может быть достигнуто следующим образом: |
|
|
|
последовательных запросов. Это может быть достигнуто следующим образом: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
// Запомнить текущий урл |
|
|
|
// Запомнить текущий URL |
|
|
|
Url::remember(); |
|
|
|
Url::remember(); |
|
|
|
|
|
|
|
|
|
|
|
// Запомнить определенный урл. Входные параметры смотрите на примере Url::to(). |
|
|
|
// Запомнить определенный URL. Входные параметры смотрите на примере Url::to(). |
|
|
|
Url::remember(['product/view', 'id' => 42]); |
|
|
|
Url::remember(['product/view', 'id' => 42]); |
|
|
|
|
|
|
|
|
|
|
|
// Запомнить урл под определенным именем |
|
|
|
// Запомнить URL под определенным именем |
|
|
|
Url::remember(['product/view', 'id' => 42], 'product'); |
|
|
|
Url::remember(['product/view', 'id' => 42], 'product'); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
В следующем запросе мы можем получить сохраненный урл следующим образом: |
|
|
|
В следующем запросе мы можем получить сохраненный URL следующим образом: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
$url = Url::previous(); |
|
|
|
$url = Url::previous(); |
|
|
|
$productUrl = Url::previous('product'); |
|
|
|
$productUrl = Url::previous('product'); |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Проверить относительность урла <span id="checking-relative-urls"></span> |
|
|
|
## Проверить относительность URL <span id="checking-relative-urls"></span> |
|
|
|
|
|
|
|
|
|
|
|
Чтобы проверить относительный урл или нет (например, если в нем не содержится информации о хосте), вы можете использовать |
|
|
|
Чтобы проверить относительный URL или нет (например, если в нем не содержится информации о хосте), вы можете использовать |
|
|
|
следующий код: |
|
|
|
следующий код: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|