Iniciando com Symfony 2 – Parte 09

No tutorial anterior, instalamos e configuramos o bundle Knp Paginator, para fazer a paginação de posts em nosso index, agora vamos instalar e configurar o Bundle StofDoctrineExtensionsBundle, para fazermos os slugs de nossos posts Instalação do bundle StofDoctrineExtensionsBundle Para instalar o StofDoctrineExtensionsBundle, temos que adicioná-lo em nosso composer.json. Abra o arquivo composer.json e adicione a

No tutorial anterior, instalamos e configuramos o bundle Knp Paginator, para fazer a paginação de posts em nosso index, agora vamos instalar e configurar o Bundle StofDoctrineExtensionsBundle, para fazermos os slugs de nossos posts

Instalação do bundle StofDoctrineExtensionsBundle

Para instalar o StofDoctrineExtensionsBundle, temos que adicioná-lo em nosso composer.json. Abra o arquivo composer.json e adicione a linha abaixo:

Depois de adicionando o StofDoctrineExtensionsBundle no composer, vamos instalá- lo. Entre no terminal e digite:

Após o Download, o StofDoctrineExtensionsBundle está instalado em nossa aplicação.

Configurando o StofDoctrineExtensionsBundle

A primeira configuração que devemos fazer, é registrar o novo bundle instalado, para isso entre no AppKernel, caminho: app/AppKernel.php

Adicione a linha abaixo no registro de bundles:

Veja na linha 17:

Pronto, o StofDoctrineExtensionsBundle está registrado.

Agora vamos fazer as configurações no arquivo config.yml, caminho: app/config/config.yml

No final do arquivo adicione as configurações abaixo:

Configurando a entidade Post

Temos que configurar nossa entidade post, para que a mesma receba os slugs. Entre na entidade post, caminho: src/Tableless/ModelBundle/Entity/Post.php

Vamos dar um use em Annotation, e apelidá-la de Gedmo veja abaixo:

Agora vamos criar uma propriedade privada chamada slug, com as suas annotations correspondentes, veja:

Temos que gerar os getters e setters, para isso vamos entrar no terminal e digitar:

Pronto, em nossa entidade Post, temos os getters e setters, veja:

Configurando o Banco de Dados

Depois de nossa entidade configurada, temos que atualizar o banco de dados, porém se tivermos posts já criados, ocorrerá um erro em nosso blog. Caso não tenha nenhum post escrito poderá rodar o comando abaixo:

Caso tenha escrito algum post para exemplo, como no meu caso, vamos excluir o banco de dados, e criá lo novamente. Entre no terminal e digite:

Excluindo o banco de dados:

Criando o banco de dados novamente:

Criando as tabelas:

Obs: Caso tenha posts escritos, e não queria excluir o banco de dados, poderá apenas atualizá-lo, porém terá que adicionar manualmente, slug por slug em cada post no banco de dados, senão ocorrerá erro na aplicação.

Veja a estrutura do banco de dados:

Configurando o Controller

Depois de termos feito as configurações citadas acima, vamos configurar nosso controller, para isso entre no IndexControlerController, caminho: src/Tableless/CoreBundle/Controller/IndexControlerController.php

No nosso método showAction, estamos passando por parâmetro o $id, no momento não queremos mais buscar nossos posts pelo id, e sim pelo slug, vamos alterar:

de:

para:

Temos que mudar também a annotation da rota, veja:

de:

para:

Estamos passando para a variável $post, o método find, e recuperando o id, vamos mudar o find para findOneBy e passar um array de slug, veja:

Veja o método showAction pronto:

Configurando o index

Em nossa index, estamos passando os links para que os posts sejam buscados pelo id, porém temos que alterá- los para que possamos buscar os posts pelo slug.

Entre no index.html.twig, caminho: src/Tableless/CoreBundle/Resources/views/IndexController/Index.html.twig

Vamos alterar os links:

No meu caso a linha 21, 29 e 35:

de:

para:

Testando nossa aplicação:

Caso tenham seguido o tutorial e excluído o bando de dados, que foi criado novamente, como no meu caso. Antes de criarmos um post, temos que criar os autores novamente, depois sim criarmos os posts. No meu caso vou criar apena um post para exemplo.

Depois do post criado, click no link e observe a url, verá o slug, que em nosso caso é o slug do titulo, veja:

Conclusão

Pronto, nosso simples projeto está retornando o slug dos post em nossa url.

Links dos tutoriais anteriores:

Iniciando com Symfony 2 – Instalação

Iniciando com Symfony 2 – parte 02

Iniciando com Symfony 2 – parte 03

Iniciando com Symfony 2 – parte 04

Iniciando com Symfony 2 – parte 05

Iniciando com Symfony 2 – parte 06

Iniciando com Symfony 2 – parte 07

Iniciando com Symfony 2 – parte 08

O projeto encontra-se no GitHub!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *