URL-адрес метки панели навигации Yii2 Bootstrap без чистого URL-адреса

Я все еще в разработке, и я не хочу использовать чистые URL-адреса в моем Yii2 прямо сейчас.

Я добавил следующий код в расширенную панель навигации проекта Yii2 About, чтобы создать подменю в разделе «О программе»:

[
    'label' => 'About',
    'url' => ['/site/about'],
    'items' => [
        ['label' => 'Invoices', 'url' => 'invoices/index'],
    ]
],

Обычно к контроллеру invoices обращаются: /?r=invoices из адресной строки клиента. Однако приведенный выше код генерирует /invoices/index, что дает Page not found error, потому что я еще не включил чистые URL-адреса.

Мой вопрос: как я могу добавить доступные новые пункты меню, как указано выше, без включения чистых URL-адресов, сохраняя при этом код в том виде, в каком он есть после включения чистых URL-адресов?


person SaidbakR    schedule 22.01.2016    source источник


Ответы (1)


url значение параметра обрабатывается \yii\ Метод helpers\Url::to():

  • false (по умолчанию): создание относительного URL-адреса.
  • true: возвращает абсолютный базовый URL, схема которого такая же, как в \yii\web\UrlManager::hostInfo.
  • строка: создание абсолютного URL-адреса с указанной схемой (либо http, либо https).

Поэтому, если вы передадите строку параметру url, она будет рассматриваться как абсолютный URL-адрес. Чтобы создать URL для данного маршрута, вам нужно передать массив, затем он будет обработан \yii\helpers\Url::toRoute():

'url' => ['invoices/index'],

Он будет учитывать настройки UrlManager, такие как $enablePrettyUrl.

person arogachev    schedule 22.01.2016