Depois de já instalado o Symfony 2, como postado no artigo anterior que escrevi, vamos avançar nosso processo criando um simples blog.
É claro que o Symfony é para projetos maiores, mas para efeito de didática, achei um bom começo, espero que gostem.
Bundle o coração do symfony
O Symfony trabalha com bundle (pacote), que é um conjunto de códigos que pode ser reutilizado em outros projetos. Simplificando: são componentes prontos, que facilitam nossa vida na hora de desenvolver. Podemos criar um bundle do zero, como vamos fazer aqui, ou configurar um já pronto.
Antes de criarmos de nosso primeiro bundle, vamos fazer uma pequena modificação no projeto. Não vamos precisar do bundle AppBundle, só usamos para a introdução.
Exclua a pasta AppBundle como mostrado na imagem, caminho src/AppBundle.
Vamos apagar o registro desse bundle que acabamos de excluir, pois todos os bundles são registrados no AppKernel para que possamos usá-los.
Entre no arquivo app/AppKernel.php e apague a linha “new AppBundleAppBundle()”, no meu caso a linha 19.
Também devemos excluir a rota desse bundle.
Entre no arquivo app/config/routing.yml e apague as linhas abaixo:
Cuidado caso tenha feito alguma modificação desde a instalação, no meu caso, estou dando continuidade a partir da instalação, e apagando as linhas acima, meu arquivo routing.yml, ficou vazio.
Criando um bundle utilizando o componente console do Symfony
Vamos criar nosso bundle! Podemos fazer isso codificando, porém o Symfony 2 nos traz um ferramenta poderosa e fantástica, o componente cosole, que já vem instalado em nossa aplicação, ou podemos instalá-lo separadamente pelo packagist, via composer.
Vamos lá.
Entre na pasta do projeto pelo terminal:
Primeiramente, para vermos o que o console do symfony é capaz, vamos digitar no terminal:
Com este comando seremos apresentados à uma lista de comandos que podemos efetuar em nossa aplicação pelo componente console do Symfony. Se instalarmos alguns componentes adicionais do symfony, essa lista pode aumentar, mas não é nosso caso agora, vamos dar continuidade!
Para criarmos nosso bunble, digitamos no terminal:
Após darmos o enter aparecerá a seguinte tela, que é um assistente do Symfony para nos ajudar na geração do bundle:
O symfony nos pede para digitarmos nossa namespace, que é o caminho completo do nosso bundle, primeiramente, temos que dar um nome para nosso vendor, caso não entenda, sugiro a leitura da PSR-4, em meus projetos particulares, coloco a sigla do meu nome como vendor “CJSN”, porém você pode colocar o nome do seu projeto, do seu cliente, etc… Aqui vamos colocar Tableless, em seguida o nome de nosso bundle.
Então digitamos
Ao darmos enter, o Symfony nos pergunta como esse bundle vai ser reconhecido em nosso projeto e nos sugere um nome: TablelessCoreBundle
Você pode simplificar digitando apenas CoreBundle, em meu caso vou deixar como está, gosto assim em meus projetos, deixando-os padrão.
E damos enter.
Agora a pergunta é: Qual o caminho que queremos instalar nosso bundle?
Por padrão vamos deixá-lo na pasta src/, somente damos enter.
Como vamos fazer a configuração de nosso bundle?
Digitamos annotation e enter:
A próxima pergunta é: Se queremos que ele gere toda a estrutura de diretórios de um bundle? Não, apenas damos um enter.
Nos pergunta sobre a confirmação de geração do bundle, damos enter.
Desejamos adicionar as configurações no AppKernel? Sim queremos, somente digitamos enter.
E pergunta se queremos inserir rotas para esse bundle, digitamos enter.
E pronto, nosso bundle está criado, veja as imagems abaixo para comparação.
Para vermos se está tudo certo, podemos entrar em nosso navegador e digitar a rota exemplo criada pelo Symfony: @Route(“/hello/{name}”), então digitamos a url no navegador: https://127.0.0.1:8000/hello/Tableless
Lembrando que o servidor deve estar iniciado, você pode ver isso no tutorial anterior. Aparecerá a mensagem “Hello Tableless!”, se você notar, verá que a debug toolbar, a barra de ferramentas do Symfony, não está aparecendo, mas não vamos nos preocupar com isso, pois não usaremos essa rota, ela é gerada apenas para exemplo.
Após a crianção do nosso bundle, o CoreBundle, vamos repetir a operação, e criar um novo bundle, agora com o nome ModelBundle.
Novamente digitamos
em seguida:
E todo o processo anteriormente feito…
A primeira coisa a fazer depois de criarmos o ModelBundle, é excluir a rota gerada pelo Symfony, é claro que poderíamos ter feito isso na hora da criação, pelo terminal, quando ele nos faz a última pergunta: Confirmar atualização automática das Rotas[sim]?
Era só termos digitado “no”, mas para efeito de didática, e para não ficarmos duplicando código nesse tutorial, preferi deixar assim.
Vamos entrar no arquivo app/config/route.yml e vamos apagar a rota gerada para esse bundle.
Apague as linhas abaixo:
Deixando somente a rota do CoreBundle criada anteriormente.
Vamos excluir também, as pastas Controller, e views, pois não vamos usar esses arquivos nesse bundle.
Caminhos das pastas a serem excluidas:
src/Tableless/ModelBundle/Controller
src/Tableless/ModelBundle/Resources/views
Concluindo
Pronto, nosso simples projeto, está configurado e pronto para darmos inicio aos demais processos, neste momento em que se encontra o mesmo, vou comitar, e subir o projeto para o GitHub. No próximo tutorial veremos como criar entidades com o Doctrine ORM em conjunto com o Symfony, para inserirmos nossos posts no banco de dados.
Para finalizarmos, recomendo novamente a documentação do Symfony, caso queiram fazer testes, estudar, se aprofundar mais no assunto!