Yii URL Manger создать маршрут с несколькими дополнительными параметрами - PullRequest
0 голосов
/ 12 июня 2018

У меня есть правило URL с несколькими необязательными параметрами, и оно работало, но оно прекратилось после того, как я обновил Yii 1.1.15 до 1.1.19.

const OPTIONAL_PARAMS = '(/<featured:featured>)?'
. '(/subType/<subType:.*?>)?'
. '(/type/<type:\d+>)?'
. '(/category/<category:.*>)?';


'<lang:(en|fr)>/reports'. OPTIONAL_PARAMS => 'reports',

Любой может дать мне несколько идей или кого-тосталкивались с подобными проблемами?

PS Другие правила диспетчера URL работают нормально, только этот с (SOME_CODE)? для необязательных параметров не работает.Я использую PHP 5.6 и Apache.

1 Ответ

0 голосов
/ 13 июня 2018

Вас может заинтересовать этот выпуск .Но вкратце: этот синтаксис (регулярное выражение вне именованных параметров) никогда официально не поддерживался и был удален как исправление в Yii 1.1.17.

Последняя версия, которая поддерживает это 1.1.16, но этодействительно старый, и я бы не рекомендовал его использовать.Возможно, вам следует создать пользовательский UrlRule и использовать его вместо CUrlRule для этого конкретного случая.


Вы также можете попытаться добавить /* в конец шаблона, например:

'<lang:(en|fr)>/reports/*' => 'reports',

Это позволит добавлять параметры GET к URL как /key/value,Итак, это:

$this->createUrl('reports', [
    'type' => 'sometype', 
    'category' => 'somecategory',
    'lang' => 'en',
]);

создаст URL как:

/en/reports/type/sometype/category/somecategory
...