создать многоуровневый маршрут Yii - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать URL с регулярным выражением в YII1.Я хочу создать URL для «имя_папкина / имя пользователя».

Я пытался так:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:w+>' => 'site/Profile',

, но это не работает.Страница просто перезагружается сама по себе

Я хочу показать новую страницу, когда URL станет похож на 'имя_папкира / имя пользователя'.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Это должно быть:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:\w+>' => 'site/profile',

w+ будет обрабатывать имена пользователей, содержащие только буквы "w", вам нужно использовать \w+ для обработки любого слова.

Также [A-Za-z0-9-A-zÀ-ú]+ выглядит подозрительно - вам следует избегать букв не-ASCII в URL, поэтому -A-zÀ-ú не нужно.Я бы порекомендовал использовать это правило:

'<pagename:[\w-]+>/<i:\w+>' => 'site/profile',
0 голосов
/ 20 июня 2019

Я заставляю это работать таким образом

'public/<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i>' => 'site/Profile'

вижу, что мне нужно было поставить "public" в начале, чтобы все заработало, и убрать + w of i, мой "сайт / профиль"просто это print_r из $ _REQUEST;

Array ( [pagename] => pagename [i] => username )

РЕДАКТИРОВАТЬ: ответ из @ rob06 намного лучше, просто не забудьте поставить его первым из массива "rules"

'rules'     => array(
     '<pagename:[\w-]+>/<i:\w+>'              => 'site/profile',
     '<controller:\w+>/<id:\d+>'              => '<controller>/view',
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
     '<controller:\w+>/<action:\w+>'          => '<controller>/<action>',
            ),
...