Zend Framework 2 – Rotas e Controllers – Parte 1

Publicado em 16 de May 2015.

Nós iremos construir um simples sistema de inventário, para armazenar nossos álbuns de cds, ou melhor mp3 rsrsrs…

A página principal iremos listar os álbuns com os links para editar e deletar os álbuns.Para isso iremos precisar criar as seguintes páginas.

Antes de criar os arquivos é muito importante entendermos os aspectos de como o frame work organiza as páginas. Em cada página de nossa aplicação temos uma ação e ações são agrupadas no controller com os modulos. Por isso agrupados as ações dentro dos controllers para instancia de novos controllers temos as ações current, archived em view.Nosso controler irá ter quatro páginas e iremos agrupa-los em nosso controller AlbumController em nosso módulo Album veja o exemplo

Home Nessa página iremos listar todos os álbuns para cadastrados
Adicionar novo álbum Nesta página iremos exibir um formulário para adicionar um novo álbum
Editar álbum Nesta página iremos carregar o álbum da listagem para poder editar
Deletar álbum Nesta página iremos mostrar uma tela de confirmação para excluir o álbum

O mapa das url's serão definidas no arquivo module.config.php. Vamos adicionar a rota do módulo de álbum, deixe o arquivo como esta abaixo.

return array(
     'controllers' => array(
         'invokables' => array(
             'Album\Controller\Album' => 'Album\Controller\AlbumController',
         ),
     ),

     // The following section is new and should be added to your file
     'router' => array(
         'routes' => array(
             'album' => array(
                 'type'    => 'segment',
                 'options' => array(
                     'route'    => '/album[/:action][/:id]',
                     'constraints' => array(
                         'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                         'id'     => '[0-9]+',
                     ),
                     'defaults' => array(
                         'controller' => 'Album\Controller\Album',
                         'action'     => 'index',
                     ),
                 ),
             ),
         ),
     ),

     'view_manager' => array(
         'template_path_stack' => array(
             'album' => __DIR__ . '/../view',
         ),
     ),
 );