domingo, 15 de abril de 2012

Trabalhando com datas no Symfony 2

Normalmente no Symfony 2 usamos o Doctrine 2 para fazer o mapeamento objeto relacional.
O Doctrine 2 usa o objeto DateTime do php, com isso temos que trabalhar com esse objeto quando queremos usar data no Symfony 2.
Qualquer dúvida sobre métodos dessa classe, pode ser tirada olhando na documentação no próprio site do php aqui.

No próximo post colocarei mas algumas informações sobre o uso de datas neste framework.

domingo, 11 de março de 2012

Como filtrar dados do Entity ChoiceField em um formulário

Se você tem um formulário de uma entidade que tem relação com outra entidade, e a pessoa escolherá o objeto na tela através de um select, checkboxes ou radio buttons, você pode usar o tipo Entity na hora de criar o formulário, mas aparecerá todos os registros da tabela.


Caso deseje filtrar esses resultados, pode-se usar a opção class e query_builder do tipo Entity. Vamos ao exemplo:
Temos uma Entidade Produtos e queremos que somente apareça no select os produtos ativos. Então vamos a criação do campo no formulário:

$builder
    ->add('produto', 'entity', array(
        'class' => 'AplicativoPrincipalBundle:Produto',
 'query_builder' => function(ProdutoRepository $er) {
     return $er->findAllAtivosQueryBuilder();
        },
    ))

A opção class diz qual é a classe da entidade. Já a opção query_builder é onde você cria uma função anônima que retorna o queryBuider gerado pela função do seu repositório.
No repositório ProdutoRepository terá que ter a função findAllAtivosQueryBuilder, que irá retornar um queryBuilder como no exemplo abaixo:

public function findAllAtivosQueryBuilder()
{
    return $this->createQueryBuilder('p')
        ->where('p.ativo = :ativo')
        ->setParameter('ativo', '1')
     ->orderBy('p.nome', 'ASC');
}

Então na hora de gerar seu formulário o framework usará essa função para fazer a consulta. Com isso na sua tela, aparecerá somente os produtos ativos para serem escolhidos.

sexta-feira, 2 de março de 2012

Como adicionar o campo CSRF token ao formulário sem usar a função form_rest

Se você tem um forulário onde não quer que todos os campos sejam exibidos, mas precisa que o campo CSRF aparece pois sua validação está dando erro sem ela. Aqui está uma solução.
Se usar:
    {{ form_rest(form) }}

Todos os campos que você não queria que estivessem, lá vão apararecer. Uma solução seria adicionar a página esse campo "_token" do formulário:
    {{ form_widget(form._token) }}

Com isso o CSRF aparecerá no seu formulário, os campos indesejados não aparecerão e sua validação funcionará normalmente.

sábado, 25 de fevereiro de 2012

Como desabilitar o CSRF de um formulário

Se você tem um formulário na sua aplicação em Symfony 2, e por algum motivo não quer que o teste CSRF  seja feito, não se desespere, é bem fácil.

Na classe de formulário, no seu método "getDefaultOptions", adicione ao array o índice "csrf_protection" com o valor false, como no exemplo abaixo:

  
public function getDefaultOptions(array $options)
{
    return array(
        'csrf_protection' => false,
    );
}

Com isso na hora da validação essa verificação não será feita.

Obs.: Pra quem não sabe o que é CSRF, é só clicar aqui

sábado, 28 de janeiro de 2012

Onde encontrar Bundles para o Symfony 2

Este post foi escrito para quem está iniciando no mundo Symfony e precisa de algumas funcionalidades prontas para turbinar seu desenvolvimento. Primeiramente vamos ver o conceito de Bundle, segundo o glossário do site oficial:

Bundle is a directory containing a set of files (PHP files, stylesheets, JavaScripts, images, ...) that implement a single feature (a blog, a forum, etc). In Symfony2, (almost) everything lives inside a bundle. 

Resumindo Bundles no Symfony 2 é como a evolução dos plugins do Symfony 1. Tudo no Symfony 2 é Bundle. São componentes que formam as aplicações e até mesmo o próprio framework. É como se fosse um conjunto de arquivos, que você pode adicionar a seu trabalho para facilitar a implementação de alguma funcionalidade do seu sistema.Se quiser gerar PDF na sua aplicação você pode usar um Bundle de geração de PFD, caso queira usar paginação pegue um Bundle que implementa paginação. E o que mais você precisar. Se  não encontrar o que precisa, pode implementar e publicar o seu ajudando a comunidade.

Por isso, conhecer este conceito é importante, para quem está iniciando com esse framework. E outra coisa que ajuda bastante, é saber onde procurar esses Bundles. Então apresentarei a vocês o KnpBunbles, que é um repositório de Bundles, onde podemos: buscar Bundles, saber quais foram atualizados recentemente, descobrir quais bundles novos apareceram e ainda tem um ranking dos melhores avaliados.



O KnpBundles não é um repositório oficial, mas pela maneira que ele está crescendo provavelmente a Sensio Labs (Empresa responsável pelo Symfony) o tomará como seu repositório oficial em um futuro próximo.






Então mão a obra, podem entrar no repositório e ver tudo que tem lá.

Link: http://knpbundles.com/

quinta-feira, 19 de janeiro de 2012

Documentação do Symfony 2 em português

Aí vai uma dica pra quem não sabe inglês e quer aprender Symfony 2, ou pra quem tem preguiça de ler em inglês. Eu encontrei no grupo de symfony no google (aqui) a informação, que a Andréia Bohner está disponibilizando uma compilação da versão atual da documentação do symfony 2 em português. A tradução ainda não está completa, então quem estiver interessado em ajudar acho que ainda tem tempo.  O link para tradução é este.
Vamos divulgar o framework para ele crescer.

sábado, 19 de novembro de 2011

Inauguração do Blog

Bom dia galera do universo symfony, este é o meu primeiro post então eu vou explicar porque criei este blog.
Quando comecei a estudar este framework ele ainda estava na versão 1.4. Estudei e gostei muito fiz algumas coisas simplismente para aprender, mas não cheguei a fazer nada profissionalmente o usando. Mas como estava para lançar a versão 2 eu parei de estudar e decidi esperar sair esta nova.
Um pouco antes de sair a versão oficial já comecei a estudá-lo e gostei muito da nova versão. E pouco tempo depois já estou fazendo um aplicativo usando este framework.
Na hora de buscar informações ou tirar dúvidas sempre encontro dificuldades pois o framework ainda é novo e a comunidade parece ser pequena, escrevemos e muitas vezes não obtemos resposta. Por isso decidi criar este Blog para poder compartilhar minhas experiências e se possível ajudar as pessoas.
Se alguém tiver alguma dúvida pode enviar que se for possível eu ajudo.