Criando rotas MVC no Zend Framework
Por Fernando Chucre05/05/2008 – 02:38
No meu ultimo artigo eu mostrei como criar uma aplicação MVC com o Zend Framework. No artigo eu mostrei como funcionava as rotas padrões e como elas chegavam as ações. Mas se eu quizer que a URL http://appmv/chucre encaminhe para o controle User e para a ação Info e ainda informe a ação o nome solicitado (chucre)? Hoje vou mostrar como fazer isso.
Rapidamente para relembrar como funciona por padrão, segue alguns exemplos:
- http://appmvc/
- modulo: default
- controle: index
- ação: index
- http://appmvc/user
- modulo: default
- controle: user
- ação: index
- http://appmvc/user/userinfo/
- modulo: default
- controle: user
- ação: userinfo
- http://appmvc/user/userinfo/id/1
- modulo: default
- controle: user
- ação: userinfo
- parâmetros:
- id = 1
Para fazer customizar as rotas usaremos a classe Zend_Controller_Router_Rewrite. Essa classe usa o método addroute para incluir uma nova rota. Esse método espera dois argumentos, o primeiro uma string que é o nome da rota, o segundo uma instancia de uma das seguintes classes:
- Zend_Controller_Router_Route
- Zend_Controller_Router_Rewrite
Vamos usar o exemplo do nosso questionamento: http://appmv/chucre. Temos que fazer que essa requisição chegue ao controle User e a ação Info. Para isso vamos usar a classe Zend_Controller_Router_Route.
Vamos analisar o seguinte código:
$router = new Zend_Controller_Router_Rewrite();
$router->addroute(’comp_js’,new Zend_Controller_Router_Route(’/:user_name’,
array(
‘controller’ => ‘user’,
‘action’ => ‘info’
)
));
Aqui temos uma instancia da classe Zend_Controller_Router_Rewrite ($router) com uma roda adicionada que encaminhara ao controle e ação desejados. Dentro da ação ‘info’ o parâmetro ‘user_name’ estará preenchido com o nome ‘chucre’ ou qualquer outro que for solicitado, essa requisição será a mesma coisa que solicitar http://appmvc/user/info/user_name/chucre ou http://appmvc/user/info/?user_name=chucre.
Acho que a maioria das necessidades serão resolvidas seguindo o exemplo acima, mas se você precisar de mais flexibilidade como usar expressões regulares, leia mais no manual do Zend Framework.
Abraços

You must be logged in to post a comment.