KISS - Keep it simple, stupid!

Gerando HTML 4.01 com o HTML Helper do CakePHP

postado por Fabrício Ferracioli em 15/12/2009 14:21:18

Apesar das melhorias introduzidas no HTMLHelper do CakePHP 1.2, sempre achei ridículo ele gerar marcação apenas em XHTML. Sempre preferi HTML, e me via engessado pelo CakePHP nesse aspecto.

Acredito que muitos passam por essa dificuldade quando estão trabalhando com o HTMLHelper e FormHelper do CakePHP. Uma das principais consequências disso, é que o código gerado na maioria das vezes não é válido, pois mistura tags HTML e XHTML.

Mas sempre imaginei que deveria haver um meio de contornar isso. Certa vez verifiquei que existia um método chamado docType no HTMLHelper, e que era possível definir HTML 4.01 com ele. Mas minha alegria logo acabou quando percebi que ele não alterava o comportamento do Helper para gerar tags HTML.

Finalmente, hoje acabei me deparando com uma alternativa. Cansado de mensagens de código inválido fiz uma leitura mais cuidadosa do manual do CakePHP e encontrei a página que diz como gerar tags HTML 4.01. A solução não é muito elegante, mas é uma alternativa presente no próprio framework.
Espero que a solução sirva para vocês também!

Update 1:Para quem estiver com preguiça de fazer o arquivo do zero, fiz um repositório no Github com o arquivo e algumas tags. Conforme for sentindo necessidade vou aumentar o conteúdo dele. Quem quiser colaborar, está convidado!

Update 2: Apliquei as sugestões do Juan Basso, agora um Helper está disponível para manter as tags HTML 4.01. Vejam a discussão abaixo. O link do Github contínua o mesmo. Mantive o arquivo anterior para quem preferir o método da documentação do Cake.

Posts relacionados:

  1. Migrando para o CakePHP 1.3 A maioria já deve saber que o CakePHP está...
  2. Aumentando a semântica com RDFa Acredito que Web vem tomando um caminho interessante com decisões...

Trackback

Faça o seu

Comentários (4)

  • 001

    Juan Basso

    em 16/12/2009 06:37:27

    Fabrício,

    Sua dica é bem legal, mas eu sugiro você a criar um novo helper para isso. Se você olhar o código do HtmlHelper, verá que ele tem um atributo público chamado tags. Com isso, seu helper pode ser um filho de HtmlHelper e alterar os valores que deseja. Se não quiser alterar todos, crie um novo atributo com as alterações e no construtor faça um merge entre as duas.
    Se fizer isso, já altere o método docType para aceitar html4-trans como default. :)

    Depois, para você não ter que trocar em todo o código para o nome da nova classe, faça o seguinte no construtor:
    var $helpers = array(‘html’ => ‘SeuPlugin.NovaClasseProHtml’);

  • 002

    Fabrício Ferracioli

    em 16/12/2009 21:27:43

    Obrigado pela contribuição Juan.
    Parece uma alternativa mais interessante realmente. Vou fazer isso e colocar lá no Github.

  • 003

    Fabrício Ferracioli

    em 18/12/2009 17:20:27

    Juan, fiz as alterações que você sugeriu.
    Ainda não tive muito tempo para testar, mas acredito que é só usar.

  • 004

    Gabriel Gilini

    em 19/04/2010 23:41:16

    Caras, e o FormHelper? Pelo que percebi aqui (não olhei o src, to puto), ele não usa o HtmlHelper pra gerar o HTML, e também não usa as tags definidas no arquivo de configuração.

    Essa porcaria só gera XHTML mesmo? Eu queria saber o que deu na cabeça pra essas pessoas usarem XHTML até hoje. Ah sim, já sei, elas não sabem o que estão fazendo >:(

  • Faça seu comentário

Topo

4 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil