Formatar A Url

Olá pessoal.

Estou com dúvidas para formatar minha url, para deixa-la amigável. Na minha tabela eu tenho um campo slug, que é unique (não podendo se repetir valor), fiz a chamada pelo controller, só que quando vou mostrar aparece o seguinte na barra de endereço: …portalsite/meucontroller/produto?p=meu-produto-teste-2 , sendo que eu queria que aparecesse …portalsite/meucontroller/produto/meu-produto-teste-2. Fiz parecido com o que gero no crud gii, onde ele passa o id como variável para a view, só que não deu certo.

Tem como é que posso fazer isso?

Métodos no controller:




public function actionProduto($p){

		$this->render('produto',array(

				'model'=>$this->loadSlugModel($p),

		));

	}


public function loadSlugModel($p)

	{

		$model=MERCext_Produtos::model()->find("slug = '".$p."'");

		if($model===null)

			throw new CHttpException(404,'OPS! A requisição dessa página é inválida.');

		return $model;

	}



Tentei fazer da seguinte forma na main.php




'urlManager'=>array(

			'urlFormat'=>'path',

			'showScriptName'=>false,

			'rules'=>array(

				'<controller:\w+>/<id:\d+>'=>'<controller>/view',

				'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

				'<controller:\w+>/<action:\w+>/<p:\w+>'=>'<controller>/produto',

				'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

			),

		),



Cara eu uso da seguinte forma:


'urlManager'=>array(

           'urlFormat'=>'path',

           'showScriptName'=>false,

           'caseSensitive'=>false,

		           

        ),

Sou iniciante ainda no Yii mas deu certo dessa forma.

Acácio,

Testa assim:


'<controller:\w+>/<action:\w+>/<p:.+>'=>'<controller>/<action>',

Cara, muito obrigado, valeu mesmo. O "." quer dizer todos os tipos de caracteres, acho que vacilei colocando w. Muito obrigado mesmo.

:D

Então, o ‘w’ pelo teste que fiz pega todas as letras mais alguns caracteres como underline, mais não me lembro de testar com ele com traços ou outros caracteres.

Muito flexível o modo de personalizar as URLs do Yii. Utilizando outros frameworks essa parte sempre era um drama.