Trabalhando com Formulários no Symfony2

Complementando o post anterior “Como Funcionam os Formulários no Symfony2?“, esta referência mostra, de maneira simplificada, as
três possíveis formas de se trabalhar com o Componente de Formulários no Symfony2.

São elas:

1. Diretamente no controlador (simples e fácil)
2. Criando uma classe independente para o formulário (melhor prática, pois é reutilizável)
3. Usando um formulário sem uma classe de dados

Seguem as referências em português e inglês:

Aproveite 🙂

Contribuindo com a tradução da documentação oficial do Symfony2

Interessado(a) em contribuir com a tradução da documentação oficial do Symfony2? Seja bem-vindo(a)!

Este post traz as orientações de como proceder e como estamos nos organizando para a tradução dos documentos. A seguinte thread da lista de discussões sobre o symfony tem as informações iniciais, conforme as instruções da página oficial.

No ano passado, traduzimos o livro “Mais com o symfony 1.3 & 1.4” que foi publicado e está a venda na Amazon.

Então, vamos lá! 🙂

Informando os documentos que deseja traduzir

Para melhor organização, primeiro informar o(s) documento(s) que pretende ajudar na tradução e/ou revisão na planilha de tradutores/revisores.

Se ainda não possuir acesso de edição nesta planilha, solicitar acesso para andreiabohner at gmail dot com.

Utilizando o Git e o github

Agora, para nos auxiliar, temos a nossa disposição o github, uma ferramenta fantástica, onde encontra-se a documentação.
Abaixo está uma descrição sucinta de como utilizar o git e o github.

Para começar, fazer o fork do repositório master da tradução para o português no github:

Agora, você irá “clonar” o projeto para a sua máquina local:
Copiar a URL do repositório do seu fork (semelhante a imagem abaixo), para utilizá-la com o comando git clone:

$ git clone git@github.com:seuusername/symfony-docs-pt-BR.git

Após completar o clone do repositório, ele terá o nome remoto “origin“. Não confundir, apesar do nome ser origin ele não está apontando para o repo master, mas sim para o seu fork no github.

Pronto, agora é só trabalhar na tradução do(s) documento(s).

Finalizadas as traduções e/ou revisões, faça o commit das alterações no seu repositório local:
$ git commit –a –m "pt_BR translation"

E atualize o seu repositório no servidor github com as alterações realizadas localmente:
$ git push origin master

O último passo é informar sobre as suas alterações ao responsável pelo repositório de origem para que ele faça um pull das alterações no repositório. Para isso, acesse a página do repositório original no github, em: https://github.com/andreia/symfony-docs-pt-BR e envie um pull request (clicando no botão “Pull Request”):

Mantendo seu repositório local atualizado

Sempre antes de fazer as suas alterações locais, lembrar de executar o comando pull para manter atualizado o seu repositório local trazendo as alterações do repositório de origem (o repositório que você fez o fork):
$ git remote add upstream git://github.com/andreia/symfony-docs-pt-BR.git
$ git pull upstream master

Formato da documentação

A documentação do Symfony2 utiliza a linguagem markup reStructuredText juntamente com o Sphinx, ao invés do markdown. Segue a referência: http://symfony.com/doc/2.0/contributing/documentation/format.html
Se preferir, existe um editor online, que pode auxiliar em: http://rst.ninjs.org/

Referências sobre o Git / github

Git Cheat Sheet
Working with remotes
Pro Git
My Common Git Workflow

[UPDATE 08/04/2011] Alterado o repositório de http://github.com/andreia/symfony-docs para https://github.com/andreia/symfony-docs-pt-BR

Dica: Definindo um nome personalizado para as tabelas i18n do Doctrine

Pesquisando na documentação do Doctrine e em blogs *around the web* a resposta não encontra-se tão facilmente, então deixo aqui a dica para quem pretende utilizar a internacionalização do banco de dados com o symfony e o behaviour i18n do Doctrine e precisa personalizar o nome das classes para as tabelas i18n 😉

A palavra mágica é tableName. Ela é uma opção do behaviour i18n para definir o nome da classe personalizado, em seu schema do banco:


BlogPost:
  actAs:
    I18n:
      tableName: custom_table_name_translation
      fields: [title]
  columns:
    title: string(255)

A solução está em uma thread no grupo do Doctrine que faz referência ao ticket 1000, onde encontra-se a resposta.

Na documentação do Doctrine sobre o behaviour i18n, onde temos a lista de opções disponíveis para o behaviour, encontramos a opção className (%CLASS%Translation) com a qual podemos definir o nome padrão para utilizar nas classes geradas, porém, esta opção não funcionará se você deseja utilizar um nome para sua tabela que não contenha a palavra Translation no final, como por exemplo, na situação em que você está trabalhando com um sistema legado, e o nome das suas tabelas mais a palavra “Translation”, ultrapassarem o limite do tamanho do banco de dados para tabelas, como no caso do Oracle, por exemplo, que é de 30 caracteres (para todos os seus identificadores).

Symfony 1.4 Cheat-Sheet: Formulários – sfForm (Primeira Parte)

O symfony 1.4 possui um framework MVC de formulários poderoso, que pode, inclusive, ser utilizado independentemente em outros projetos.

Esta primeira parte das referências sobre os formulários do symfony, exibe um esquema exemplo sobre a utilização de um formulário simples e as possíveis configurações relativas aos campos do formulário que podem ser realizadas através do método configure().

Idiomas disponíveis:

  • English: Forms – sfForm (Part I) [PDF]
  • Português: Formulários – sfForm (Parte I) [PDF]

Doctrine + symfony 1.4 – Alterando o nome das sequences do Oracle utilizadas pelo Doctrine

A seguir veremos como alterar no symfony o nome das sequences utilizadas pelo Doctrine.

Por padrão, os nomes das sequences são gerados automaticamente pelo Doctrine seguindo o formato: nomeTabela_seq (‘%s_seq’)

Mas, onde e como posso alterar o nome das sequences, por um novo padrão ou definir um nome para cada modelo independentemente de um formato fixo, para meu banco de dados existente?

Para definir um nome diferenciado de sequence para cada modelo, você deve informar o parâmetro “sequence” na chave primária do modelo desejado em seu esquema do banco de dados (schema.yml). Por exemplo, digamos que o nome de sua sequence para o modelo (tabela) Area seja SEQ_AREA:


Area:
  tableName: AREA
  columns:
    cd_area:      { type: integer(3), primary: true, sequence: SEQ_AREA}
    descricao:    { type: string(255) }

Ao verificar o SQL da sequence na barra de ferramentas para debug web o nome da sequence ainda continua incorreto, pois será adicionado o padrão do Doctrine %s_seq:

SELECT SEQ_AREA_seq.nextval FROM DUAL

O Doctrine nos permite modificar uma série de configurações antes de carregar os modelos através das configurações globais. Você pode verificar as configurações disponíveis na documentação do Doctrine.

O atributo que precisamos alterar agora é o ATTR_SEQNAME_FORMAT que, como o nome sugere, modifica o formato do nome das sequences.
Os atributos globais são setados através da instância singleton Doctrine_Manager.

No symfony, as configurações globais do Doctrine são definidas na classe config/ProjectConfiguration.class.php
através do método configureDoctrine.

Vamos modificar então o atributo ATTR_SEQNAME_FORMAT, onde podemos definir o formato para aceitar qualquer
nome de sequence informado com o atributo “sequence” no schema:


<?php

require_once '/var/www/lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration{

  public function setup(){
    $this->enablePlugins('sfDoctrinePlugin', 'sfDoctrineGuardPlugin');
  }

  public function configureDoctrine(Doctrine_Manager $manager){
    $manager->setAttribute(Doctrine::ATTR_SEQNAME_FORMAT, '%s');
  }
}

Observação: Ao definir o nome da sequence com o atributo “sequence” no esquema do banco de dados, não deve-se utilizar o atributo “autoincrement: true”.

Directory Structure and CLI Cheat-Sheet – symfony 1.4

pt_BR: Muitos leitores do /webdev tem perguntado sobre as atualizações das referências rápidas (cheat-sheets) para as novas versões do framework PHP symfony.

Bem, aqui vai a primeira com a estrutura de diretório e as tarefas da linha de comando (CLI) do symfony, muito mais poderosa agora na versão 1.4 do framework.

As cheat-sheets serão atualizadas para a versão 1.4, porque esta é a versão LTS atual (com suporte de longo tempo).


en_US: Many readers of the /webdev have asked me about the updates of the cheat-sheets for new versions of the symfony framework.

Well, here’s the first one with the directory structure and tasks of the command line interface (CLI), much more powerful now in version 1.4 of the framework.

The cheat-sheets will be updated to version 1.4, because this is the current LTS version (Long Term Support).


Idiomas:

Calendário de Advento symfony: construindo a aplicação web 2.0 Jobeet em 24 dias

Jobeet

Isso mesmo! Neste ano de 2008 temos um novo calendário de advento symfony!

Novamente uma ótima oportunidade para aprender o framework symfony, agora na versão 1.2, através de uma série de tutoriais publicados todos os dias, entre o dia primeiro de dezembro e o Natal.

O objetivo é, a exemplo do askeet (publicado em 2005), termos no dia 24 a conclusão de uma aplicação web 2.0, dedicando 1 hora diária para ler os tutoriais e praticar. O nome desta aplicação é Jobeet e será um software de Job Board, ou quadro de vagas, de código aberto. Na aplicação será possível procurar por um trabalho ou propor um.

Os tutoriais, em inglês, são disponibilizados no seguinte endereço:
http://www.symfony-project.org/jobeet/1_2/en/

E, para quem não está familiarizado com o inglês, estou trabalhando nas traduções para o português e disponibilizando no site oficial em:
http://www.symfony-project.org/jobeet/1_2/pt_BR/

Aproveite! 🙂