Adicionando rotas a uma página com Zend Navigation
Opa… Tudo certo por aí?
Já viu os outros posts da série? É melhor começar por eles…
Hoje vamos ver como adicionar rotas a uma página que está em um menu. Não sabe criar rotas ou não sabe o que é uma rota? Dá uma lida aqui antes de prosseguir. Para o nosso caso, vamos incluir utilizando o método mais simples, que é pelo application.ini.
;; Rota - notícias resources.router.routes.categoria.route = "/categoria/:categoria" resources.router.routes.categoria.defaults.controller = "noticias" resources.router.routes.categoria.defaults.action = "index" resources.router.routes.categoria.defaults.categoria = null
Com isto, precisamos informar ao Zend Navigation em qual rota está cada página. Para isto, utilizamos o código abaixo em nosso navigation/default.ini:
noticias.pages.esportes.route = "categoria"
Fácil, né? Pois é… Só que aí aparece um problema nas outras páginas. Quando você entra em uma categoria de notícias, todas as páginas do menu ficam indicando para a própria página. Estranho, né? Isto acontece porque, quando não definimos uma rota específica para uma página, o View Helper URL pega a rota da página que está sendo exibida neste momento para criar a URL. Quando você não tem nenhuma rota, isto não é um problema. A partir do momento que você tem mais de uma rota (nosso caso) é um problema chato.
Como resolver??
Simples!!!! Definindo a rota das outras páginas como default. Olha como é fácil.
noticias.route = "default"
Fazendo isto em todas as páginas resolvemos o problema. Depois disto, o navigation/default.ini ficou assim:
;; Página Início
home.label = "Início"
home.controller = "index"
home.action = "index"
home.class = "home"
home.title = "Página Inicial"
home.route = "default"
;; Página A empresa
empresa.label = "A empresa"
empresa.controller = "empresa"
empresa.action = "index"
empresa.title = "Informações sobre a empresa"
empresa.route = "default"
;; História
empresa.pages.historia.label = "História"
empresa.pages.historia.controller = "empresa"
empresa.pages.historia.action = "historia"
empresa.pages.historia.title = "História da empresa"
empresa.pages.historia.route = "default"
;; Missão
empresa.pages.missao.label = "Missão"
empresa.pages.missao.controller = "empresa"
empresa.pages.missao.action = "missao"
empresa.pages.missao.title = "Missão da empresa"
empresa.pages.missao.route = "default"
;; Visão
empresa.pages.visao.label = "Visão"
empresa.pages.visao.controller = "empresa"
empresa.pages.visao.action = "visao"
empresa.pages.visao.title = "Visão da empresa"
empresa.pages.visao.route = "default"
;; Página Notícias
noticias.label = "Notícias"
noticias.controller = "noticias"
noticias.action = "index"
noticias.title = "Notícias sobre o mercado"
noticias.route = "default"
;; Categoria Esportes
noticias.pages.esportes.label = "Esportes"
noticias.pages.esportes.controller = "noticias"
noticias.pages.esportes.action = "index"
noticias.pages.esportes.title = "Notícias sobre Esportes"
noticias.pages.esportes.route = "categoria"
noticias.pages.esportes.params.categoria = "esportes"
;; Categoria Entretenimento
noticias.pages.entretenimento.label = "Entretenimento"
noticias.pages.entretenimento.controller = "noticias"
noticias.pages.entretenimento.action = "index"
noticias.pages.entretenimento.title = "Notícias sobre Entretenimento"
noticias.pages.entretenimento.route = "categoria"
noticias.pages.entretenimento.params.categoria = "entretenimento"
;; Categoria Tecnologia
noticias.pages.tecnologia.label = "Tecnologia"
noticias.pages.tecnologia.controller = "noticias"
noticias.pages.tecnologia.action = "index"
noticias.pages.tecnologia.title = "Notícias sobre Tecnologia"
noticias.pages.tecnologia.route = "categoria"
noticias.pages.tecnologia.params.categoria = "tecnologia"
;; Página Contato
contato.label = "Contato"
contato.controller = "contato"
contato.action = "index"
contato.title = "Entre em contato conosco"
contato.route = "default"
Isto gerou um menu assim
<ul class="navigation">
<li class="active">
<a title="Página Inicial" class="home" href="/navigation/public/">Início</a>
</li>
<li>
<a title="Informações sobre a empresa" href="/navigation/public/empresa">A empresa</a>
<ul>
<li>
<a title="História da empresa" href="/navigation/public/empresa/historia">História</a>
</li>
<li>
<a title="Missão da empresa" href="/navigation/public/empresa/missao">Missão</a>
</li>
<li>
<a title="Visão da empresa" href="/navigation/public/empresa/visao">Visão</a>
</li>
</ul>
</li>
<li>
<a title="Notícias sobre o mercado" href="/navigation/public/noticias">Notícias</a>
<ul>
<li>
<a title="Notícias sobre Esportes" href="/navigation/public/categoria/esportes">Esportes</a>
</li>
<li>
<a title="Notícias sobre Entretenimento" href="/navigation/public/categoria/entretenimento">Entretenimento</a>
</li>
<li>
<a title="Notícias sobre Tecnologia" href="/navigation/public/categoria/tecnologia">Tecnologia</a>
</li>
</ul>
</li>
<li>
<a title="Entre em contato conosco" href="/navigation/public/contato">Contato</a>
</li>
</ul>
Legal né? Já está gostando mais de usar o Zend Navigation? Ainda tem MUITA coisa para aprender nele. Fiquem ligados nas novidades



Excelente cara estou acompanhando passo a passo tem um erro ai na aspas ”
está faltando fechar a default deu erro aqui mais talvez tenha alguém que possa se perder abraços
contato.route = “default
Opa.. Obrigado. Corrigi já o código.