Gerando HTML 4.01 com o HTML Helper do CakePHP
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.
Tags: cakephp, github, helpers, html, php, xhtmlComentários (3)
-
001
Juan Basso
em 16/12/2009 06:37:27Fabrí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:43Obrigado 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:27Juan, fiz as alterações que você sugeriu.
Ainda não tive muito tempo para testar, mas acredito que é só usar.




