Todo mundo já deve ter se perguntando: “Como adiciono um código HTML no Zend_Form?“.Essa dica vem lá do meu amigo Marcelo Korjenioski.
Respondendo a pergunta acima, quem utiliza Zend Framework junto com o Zend_Form, com certeza já precisou adicionar um código HTML dentro do formulário. Até pouco tempo atrás eu fazia isso utilizando o setDescription do Próprio Zend_Form. Hoje em dia eu alterei para o formato que o Marcelo Korjenioski criou.
Dentro de sua /library, crie o seguinte arquivo: Htmlform.php
<?php
class Htmlform extends Zend_Form_Element_Xhtml {
public $helper = 'formNote';
}
?>
Dentro do seu formulário, você vai instanciar essa classe criada exatamente no local aonde você pretende adicionar o código html. Segue o exemplo:
$html = new Htmlform('nome_do_elemento');
$html->setValue('<strong>Código html dentro do Zend_Form</strong>');
$this->addElement($html);
Provavelmente eu passe a utilizar essa classe aqui nos posts do blog (quando falar de Zend_Form). Então fiquem espertos =)
Abraço galera.
Posts relacionados:
- Zend Framework – Criando Action Helpers Conforme eu havia prometido aqui, hoje eu estarei dando continuidade...
- Zend Framework – Tutorial – Personalizando os decorators php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar...
- Integrando o Zend Framework com o Dojo – Parte II Nessa segunda parte do tutorial, vou exemplificar um form utilizando...



10 Comentários Recebidos
July 20th, 2010 @15:33
Legal isso hein nivaldo!
so que ao usar, não sei se estou fazendo algo errado,
tive um problema quando o form não é valido parece que a classe perde o valor… esse situação é normal?
July 20th, 2010 @15:43
Boa tarde Felipe,
Acredito que seja normal sim. O interessante é você utilizar esse artifício apenas para consertar layout e/ou criar componentes html que não sejam campos.
Para validar campos e formulários, use os métodos normais do ZF
July 21st, 2010 @17:55
poiseeee eu tava usando pra fazer uns umas tag’s dd dt…
e colocando uns buttons dentro… vou tentar de outra forma…
July 23rd, 2010 @00:07
Ixe, realmente, mas exemplo, eu quero colocar uns titulos que apenas um componente html, exemplo Titulo Noticias, ai quando vou validar isValid do Zend Form, ai ele some os titulos, nao existe um jeito dele manter o html não?
July 23rd, 2010 @08:26
Leandro, na real eu ainda não descobri o porque disso. Ele mantém todos os elementos exceto esses. Vou fazer mais uns testes e se chegar em uma solução eu comento aqui.
Valeu.
August 2nd, 2010 @10:09
O nivaldo!!!
você fez uns post’s sobre action e helper,
não rola um sobre placeholder…
eu comecei a usar muitos helpers depois que vi aqui no blog,
mas me passaram um conceito sobre os placeholders que achei
bem interessante..
abraço!
August 2nd, 2010 @16:59
Legal Felipe!
Vou ver o que consigo aprontar para você. Sempre que tiver alguma sugestão, por favor, me informe que faço o possível para criar um post sobre isso.
Abraços!
August 9th, 2010 @18:48
Opa, e ai nivaldo, blz?
Então man, a unica solução que eu achei pra ele nao apagar, foi adicionando o html via post, vou postar um exemplo aki pro pessoal
//crio o campo no arquivo do formulario
$html = new Htmlform(‘titulo’);
$this->addElement($html);
ai no controller eu faço:
//pego os campos do post
$post = $this->_request->getPost();
//aki que esta a mágica, adiciono o html aqui junto com os outros campos do post
$post['titulo'] = ‘Parceiros’;
if($form->isValid($post)){
//se passar na validação faço isso
}else{
//complemento a mágica, senao passar na validação preencho novamente com o valor que setamos la em cima
$form->getElement(‘titulo’)->setValue($post['titulo']);
}
Bom, eu fiz uma classe extendendo Zend_Form com um methodo setValues (no plural) ai ele preenche tudo de uma vez só.
Valeu man.
August 10th, 2010 @08:29
Massa leandro! Ficou muito bom. Obrigado por compartilhar =D
August 21st, 2010 @19:26
Olá, amigos!
Uma forma de sempre exibir o valor, quando um erro acontecer em outro elemento, é, além do atributo $_helper = ‘formNote’, sobreescrever o método isValid(), retornando sempre um boolean VERDADEIRO, na Classe exposta pelo amigo Nivaldo (“HtmlForm”), já que essa não passiva de validão, ficando assim:
class HtmlForm extends Zend_Form_Element_Xhtml {
public $helper = ‘formNote’;
public function isValid($value, $context = null) {
return true;
}
}
Abraços a todos!!
Faça seu Comentário