Criando rotas MVC no Zend Framework

Por Fernando Chucre
05/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.

Creative Commons License
Esta obra está licenciada sob uma Licença Creative Commons.