Yii2 Создать красивый URL, например /index.php/viewName/actionName/var1/value1/var2/value2 - PullRequest
0 голосов
/ 08 февраля 2019

Я играю с yii2 (недавно работал в Yii 1.3) и мне нужна помощь в настройке / написании правил Url-Manager для моего любимого URL-адреса.

Например, я хочу вызвать действиеtest из xmpleController с 2 параметрами.

обычный запрос GET будет выглядеть следующим образом:

?param1=value1&param2=value2

на данный момент мой URL выглядит так:

index.php/xmple/test/?param1=value1&param2=value2

Вот как должен выглядеть URL:

index.php/xmple/test/param1/value1/param2/value2

вот мои правила URL-менеджера:

'urlManager' => [
     'enablePrettyUrl' => True,
     'showScriptName' => false,
     'rules' => [
        '<a:\w+>/<b:\w+>/<c:\d+>/<d:\d+>' => 'a/b'
     ],
 ],

У кого-нибудь естьИдея, как я могу использовать мою любимую схему URL?Я думаю, что единственный способ достичь своей цели - отредактировать правило urlManager, но у меня нет никакого опыта в этом.может, у кого-то есть подсказка для меня?

Спасибо за помощь!

1 Ответ

0 голосов
/ 08 февраля 2019

Прежде чем приступить к созданию желаемого формата URL-адреса, необходимо сначала понять, какие форматы поддерживает менеджер URL-адресов при работе в Yii2.И как создавать правила для создания этих форматов.

Поддерживаемые форматы URL

  • Формат URL по умолчанию;

    Формат URL по умолчанию использует параметр запросаимя r для представления маршрута и обычные параметры запроса для представления параметров запроса, связанных с маршрутом.URL /index.php?r=xmple/test&param1=100 представляет маршрут xmple/test и параметр запроса param1 100.Формат URL по умолчанию не требует какой-либо настройки диспетчера URL и работает в любой настройке веб-сервера.

  • Красивый формат URL.

    Используется дополнительный путь, следующий заимя сценария входа для представления маршрута и связанных параметров запроса.Например, дополнительный путь в URL /index.php/xmple/100 равен /xmple/100, который может представлять маршрут xmple/test и параметр запроса param1 100 с правильным правилом URL.Чтобы использовать красивый формат URL, вам нужно будет разработать набор правил URL в соответствии с фактическим требованием о том, как должны выглядеть URL.

    Это правило может удовлетворять приведенному выше утверждению 'xmple/<param1:\d+>' => 'xmple/test',

Подробнее об этом здесь

Так что не пойдетпоказывать

index.php/xmple/test/param1/value1/param2/value2, но

index.php/xmple/test/value1/value2 или index.php/xmple/value1/value2 или xmple/test/value1/value2.

Как создавать правила

Вы можете настроитьyii\web\UrlManager::$rules как массив, ключами которого являются шаблоны и значения соответствующих маршрутов .

Подробнее здесь

Вы можете использовать правило 'xmple/test/<param1:\w+>/<param2:\w+>'=>'xmple/test', учитывая, что вы будете отправлять параметры, которые соответствуют любому символу слова (равному [a-zA-Z0-9_]) в качестве параметра), который будет выводить xmple/test/value1/value2 с 'showScriptName' => false, или index.php/xmple/test/value1/value2 в противном случае.

Если правило будет использоваться для одного контроллера / действия, или вы можете использовать, как описано, или использовать параметризованный маршруты , что позволяет использовать правило URL для сопоставления нескольких маршрутов.

Вы можете изменить свой urlManager на следующее

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
             'xmple/test/<param1:\w+>/<param2:\w+>'=>'xmple/test'
        ],
 ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...