Вопрос по – Управление URL в Yii: контроллер / действие / идентификатор в / идентификатор

2

Можем ли мы отобразить URL в форматеcontroller/action/id в/id в Yii? Кроме того, одной из основных проблем является то, что мне нужно делать это только на конкретном контроллере / действии.

Для экземпляра: если у меня есть/user/post/ujjwal тогда мне нужно показать/ujjwal только. И когда у меня есть/image/display/ujjwal тогда может быть как есть?

Я прочитал управление URL в Yii и понял, что там показано. Но я не знаю, как управлять URL на основеcontroller/action.

Любая помощь будет признательна.

Спасибо, Уджвал

то, что я имел в виду, было, я не мог найти возможное близкое решение моей проблемы .. или, возможно, я не понимал это настолько хорошо, что я не мог связать это с моей проблемой ... Ujjwal Prajapati
Вы прокомментировали одну из ссылок, что документация yii не является решением вашей проблемы. Пожалуйста, опубликуйте отрывок из вашего конфигурационного файла, касающийся форматирования URL. Orlymee

Ваш Ответ

3   ответа
1

В вашемconfig/main.php пытатьс

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
                        'rules'=>array(
                          'user/post/<user:\w+>'=>'<user>', //this should be the very first rule
                           //other rules 
                         ),
            ),
        ),
Это наоборот: клиентский URI идет первым в массиве, затем пара контроллер / действие. Кроме того, размещение самого общего правила наверху гарантирует, что ни одно из других правил никогда не будет выполнено. Ansari
Думаю, ты путаешь слово с общим словом.user/post/<user:\w+> будет соответствовать толькоuser контроллерpost действие, когда у него есть параметр слова. adamors
Да, но OP не хочет получать доступ к действию / user / post таким образом - он только хочет, чтобы имя параметра было в URL. Ansari
Да, я просто хочу, чтобы имя пользователя отображалось в user / profile / username и, как подсказывает aslingga, оно работало отлично. Спасибо за помощь ребята! Ujjwal Prajapati
Хммм ... почему этот ответ не был принят, в любом случае я хотел сделать что-то вроде @UjjwalPrajapati только для определенного URL, и этот способ указания правила сработал ... Спасибо Rahul Thakur
2

вы не можете сопоставить один настроенный URL-адрес двум или более URL-адресам или действиям. Например, когда кто-то имеет доступ к/my_username будет перенаправлен на/user/post/ujjwal или/image/display/ujjwal. Приложение будет сбит с толку из-за этого шаблона / правил.

Так что я рекомендую вам поменять/image/display/ujjwal другой шаблон / правила. Подобно/my_username/image

Я используюusername как строка запроса для выбранного имени пользователя.

'components'=>array(

            .....

            'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<username:[\w.]+>'=>'user/post',
                '<username:[\w.]+>/display'=>'image/display',
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),

            ....

Кто-то задавал этот похожий вопрос раньше: Как указать дружественный к SEO URL-адрес, такой как твиттер www.twitter.com/ <name>, используя YII framework

Спасибо. Это очень полезно, и я следовал твоим инструкциям. Оно работает! Ujjwal Prajapati
@ UjjwalPrajapati Круто !!! aslingga
0

что вы хотите, может быть сделано, но с несколькими побочными эффектами. Если вы положите это в свойconfig/main.php:

        'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'rules'=>array(
            'image/<action>/<username>' => 'image/action/username',
            '<username>' => 'user/post/username',
            ),
        ),

Сначала поставьте все свои более конкретные правила, затем все остальное, что является единым целым, перейдет к/user/post/something.

Похожие вопросы