Pergunta sobre url, yii – Controlando url no Yii: controller / action / id to / id

2

Podemos exibir url no formatocontroller/action/id para/id em Yii? Além disso, um grande problema é que eu preciso fazer isso apenas no controlador / ação específica.

Por exemplo: se eu tiver/user/post/ujjwal então eu preciso mostrar/ujjwal só. E quando eu tiver/image/display/ujjwal então pode ser como é?

Eu li o gerenciamento de url no Yii e entendi o que é mostrado lá. Mas eu não sei como controlar o URL com base nocontroller/action.

Qualquer ajuda seria apreciada.

Obrigado, Ujjwal

o que eu quis dizer foi que não consegui encontrar a possível solução próxima ao meu problema .. ou pode ser que eu não o entendi tão bem que não pude relacioná-lo com o meu problema ... Ujjwal Prajapati
você comentou em um dos links que a documentação do yii não foi a resposta para o seu problema. Por favor, poste o trecho do seu arquivo de configuração relacionado à formatação do URL. Orlymee

Sua resposta

3   a resposta
0

com alguns efeitos colaterais no entanto. Se você colocar isso no seuconfig/main.php:

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

Coloque todas as suas regras mais específicas primeiro, então tudo o mais que for uma única unidade irá para/user/post/something.

1

Na tuaconfig/main.php experimentar

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
                        'rules'=>array(
                          'user/post/<user:\w+>'=>'<user>', //this should be the very first rule
                           //other rules 
                         ),
            ),
        ),
Sim, mas o OP não deseja acessar a ação / user / post dessa maneira - ele deseja apenas que o nome do parâmetro esteja na URL. Ansari
Sim, eu só quero username para mapear para user / profile / username e, como sugerido por aslingga, funcionou perfeitamente. Obrigado pela vossa ajuda pessoal !! Ujjwal Prajapati
Este é o contrário - o URI voltado para o cliente vem em primeiro lugar no array, depois no par controlador / ação. Além disso, colocar a regra mais geral no topo garantirá que nenhuma das outras regras seja atingida. Ansari
Eu acho que você está confundindo a palavra específica com geral.user/post/<user:\w+>só irá coincidir com ouser controladorpost ação quando tem um parâmetro de palavra. adamors
Hmmm ... como é que esta resposta não foi aceite, de qualquer forma eu queria fazer algo como @UjjwalPrajapati apenas para uma url específica e esta forma de especificar a regra fez o truque ... Obrigado Rahul Thakur
2

você não pode mapear um URL personalizado para dois ou mais caminhos ou ações de URL. Como quando alguém acessa/my_username o será redirecionado para/user/post/ujjwal ou/image/display/ujjwal. O aplicativo será confundido por causa desse padrão / regras.

Então eu recomendo que você mude o/image/display/ujjwal para outro padrão / regras. Gostar/my_username/image

eu usousername como a string de consulta para o nome de usuário selecionado.

'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>',
            ),
        ),

            ....

Alguém fez essa pergunta semelhante antes:Como especificar uma URL amigável para o SEO, como o twitter www.twitter.com/ <name> usando o framework YII

Obrigado. Isso é bastante útil e eu segui sua instrução. Funciona!! Ujjwal Prajapati
@UjjwalPrajapati Cool !!! aslingga

Perguntas relacionadas