Salve galera do Yii Brasil!
Minha dúvida é relacionada a esse tópico do wiki
http://www.yiiframework.com/wiki/53/using-search-engine-and-user-friendly-urls
gente eu estou fazendo isso dentro do controler
echo $this->createUrl('/post/view',array('id'=>$post->id,'title'=>urlseo::slug($post->title)));
o resultado tá voltando assim:
/post/view?id=1&title=atencao-e-um-aviso
mas eu gostaria que voltasse assim:
/post/1/atencao-e-um-aviso
configurei minha urlManager:
'post/<id:\d+>/<title>'=>'post/view',
qual a solução?
gusnips
(Gustavo)
3
'post/<id:\d+>/<title:\w+>'=>'post/view',
Newerton
(Newerton Araujo)
4
Adriano,
Posta todo os rules do main.php, pois as ordem afeta na construção.
Obrigado brothers!
Agora as regras do url ficaram certas, realmente tem ave com a ordem dos controllers e actions.
Newerton vc pode me explica qual é a logica dessa ordem?
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'<controller:\w+>/<id:\d+>/<title:\w+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
gusnips
(Gustavo)
6
o sistema checa uma por uma e qual dar match antes é aceita
Agora estou na ultima fase da Url amigável!
bom, utilizei uma class de slug que o Edson Rodrigues me forneceu para tirar os [color="#FF0000"]ç~^,!?´`[/color].
criei um CreaterUrl
$this->createUrl('/post/view',array('id'=>$post->id,'title'=>urlseo::slug($post->title)));
e o valor tá retornando certim assim
/post/1/atencao-e-um-aviso
mas quando eu tento acessa esse url amigável pelo browser
dá [color="#FF0000"]Error 404
The system is unable to find the requested action "1".[/color]
gusnips
(Gustavo)
8
a expressao regular \w+ nao inclui traços, assim nao da o match na primeira rule e soh da na ultima
faça algo como
<title:[a-zA-Z\-_]+>
onde aceita traço e underline