Na minha opinião o zend framework 2 possui três conceitos básicos para seu uso e aproveitamento. O primeiro conceito são as rotas.
As rotas são as responsáveis em acessar um controller e a action de um módulo e existem vários tipo de rotas, porém vamos nos focar em duas: Literal e Segment. O arquivo de configuração está localizado dentro de cada módulo na pasta config. O arquivo module.config.php é o responsável entre outras funções pela configuração das rotas.
return array(
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/usuario',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
Segue abaixo uma explicação básica dos principais pontos da configuração da rota. Esses pontos são utilizados pra qualquer tipo de rota:
router => índice do array onde iremos configurar todas as rotas do módulo.
home => é o nome da rota geralmente usado quando vamos dar um redirect().
type => é literalmente o tipo da rota que vamos usar como literal, segment, etc
route => é o modo de como iremos acessar a rota pela url, por exemplo: /usuario. É importante lembrar que /usuario é diferente de /usuario/ para o zend framework 2, então temos que tomar muito cuidado com isso.
controller => é o nome da classe do controller do módulo que iremos instanciar por padrão, caso nenhum outro controller seja passado por parâmetro.
action => é o método do controller que queremos acessar por padrão, caso nenhuma outra action seja passada por parâmetro.
Rota Literal
'type' => 'Zend\Mvc\Router\Http\Literal'
É o tipo de rota mais simples. Ela não aceita parâmetros como por exemplo:
/usuario/alterar/10
Os únicos parâmetros permitidos são o controller (usuario) e a action (alterar).
Exemplo de configuração:
'router' => array(
'routes' => array(
'usuario-home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/usuario',
'defaults' => array(
'controller' => 'Usuario\Controller\Usuario',
'action' => 'selectAll',
),
),
)
)
)
Rota Segment
'type' => 'Zend\Mvc\Router\Http\Segment'
Talvez seja o tipo de rota mais utilizado, ao contrário da rota Literal, esta rota aceita parâmetros.
Exemplo de configuração:
'router' => array(
'routes' => array(
'usuario-edit' => array(
'type' => 'segment', //também pode chamada assim
'options' => array(
'route' => '/usuario[/:action[/:id]]',
'defaults' => array(
'controller' => 'UsuarioController',
'action' => 'edit'
),
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '\d+'
),
),
)
)
)
route => neste exemplo o único parâmetro obrigatório é o controller. Tanto a action como o id são opcionais.
constraints => é a padronização de cada parâmetro que a rota pode receber.
OBS: O índice controller da rota é a referencia ao índice dos controllers invokables dentro do array controllers.
'controllers' => array(
'invokables' => array(
'UsuarioController' => 'Usuario\Controller\UsuarioController'
),
),
Por boas práticas e para evitar duplicidade no apelido do controller é recomendável que usamos o caminho do controller como apelidos como por exemplo:
Na rota:
'defaults' => array( 'controller' => 'Usuario\Controller\Usuario',
Nos controllers:
'invokables' => array(
'Usuario\Controller\Usuario' => 'Usuario\Controller\UsuarioController',
Mais informações:
http://framework.zend.com/manual/current/en/in-depth-guide/understanding-routing.html
Nenhum comentário:
Postar um comentário