Yii Framework Forum: Formatar A Url - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Formatar A Url Rate Topic: -----

#1 User is offline   Acácio Lima 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 18-April 12

Posted 01 April 2013 - 11:45 AM

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

0

#2 User is offline   Michel Camargo 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 31-March 13

Posted 01 April 2013 - 04:02 PM

View PostAcácio Lima, on 01 April 2013 - 11:45 AM, said:

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.
0

#3 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 843
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 01 April 2013 - 06:40 PM

Acácio,

Testa assim:

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

This post has been edited by Newerton: 01 April 2013 - 06:41 PM

Newerton Vargas de Araújo
0

#4 User is offline   Acácio Lima 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 18-April 12

Posted 02 April 2013 - 06:05 PM

View PostNewerton, on 01 April 2013 - 06:40 PM, said:

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
0

#5 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 843
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 03 April 2013 - 08:08 AM

View PostAcácio Lima, on 02 April 2013 - 06:05 PM, said:

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.
Newerton Vargas de Araújo
0

#6 User is offline   max171 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 13-October 11

Posted 14 February 2014 - 11:43 PM

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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users