Vamos limpar nossa mente para a imaginação...
Como seria bom reaproveitar um formulario de forma que eu pudesse definir destinos diferentes ou ainda inserir um ou dois campos a mais... uma validação lógica e evitar scripts como SQL injection sem ter muito trabalho... deve ser um sonho... não sei...
Será que isso é possível? (Não vamos evangelizar o ZF mas...) Com o Zend Framework MUITA coisa é possível sem precisar "escovar bits"...e por isso hoje vou falar sobre Zend_Form ensinando a criar formularios completos sem muito trabalho e ainda reutilizando eles.
Só não faça merda com o sistema de um cliente... faça isso com suas experiências é melhor e mais seguro.
Quando vc baixa o Quickstart do zend framework por padrão ele já te da um diretório com o nome forms e vem até um exemplo de formulario com instancias de outras classes do zend, mas acredito que para um iniciante a curva de aprendizagem é longa quando ve uma classe pronta com tanta coisa... por conta disso vamos criar uma nova.
Nesse diretorio forms crie um arquivo chamado Exemplo.php e nele insira esse conteudo:
- <?php
- class Application_Form_Exemplo extends Zend_Form {
- public function init() {
- $titulo = new Zend_Dojo_Form_Element_ValidationTextBox('titulo');
- $titulo->setLabel('titulo')
- ->setRequired(true)
- ->setRegExp("[\w\d]*");
- $submit = new Zend_Dojo_Form_Element_SubmitButton('Enviar');
- $this->addElements(array($titulo, $submit));
- }
- }
- ?>
O que fizemos ai foi simples, criamos uma classe Exemplo mas o nome dela foi dado de acordo com o diretório (Application/Forms/Exemplo) justamente para o ZF carrega-la sem precisar de malditos includes e essa classe extende da Zend_Form que tem diversos métodos para formulario.
Criamos um método init que é o construtor dessa classe e nele inserimos um input titulocom alguns métodos que definem label, obrigatoriedade e expressão regular respectivamente.
Criamos o objeto $submit passando seu nome para o construtor da classe SubmitButton e por fim adicionamos esses caras no formulario completo.
Mas e como eu faço para colocar isso na view?
Esse trabalho é bem simples... vá para o seu controller index na action index que é onde vamos chamar esse carinha e fica bem simples olha:
- public function indexAction() {
- $formulario = new Application_Form_Modelo();
- $formulario->setAction('index/teste');
- $this->view->formulario = $formulario;
- }
Veja que nesse action fizemos algo muito simples, criamos um objeto $formulario que é instancia da classe que criamos(do nosso formulario) e setamos um local para onder esse form será enviado e por fim mandamos ele para a view...
E ai na view é só exibir essa criança (echo $this->formulario;) pronto, formulario pronto e podemos reutiliza-lo em qualquer lugar, podendo mudar o destino e ainda adicionar elementos, validações e etc...
Não entrei a fundo sobre as validações, formatação do formulario pois a ideia era mostrar de forma simples como ele funciona caso vc queira um estudo aprofundado nesses caras a documentação do zend esta mt boa ou ainda veja nesse blog onde o autor fala mt bem dos decorators do zend form: blog
E ai na view é só exibir essa criança (echo $this->formulario;) pronto, formulario pronto e podemos reutiliza-lo em qualquer lugar, podendo mudar o destino e ainda adicionar elementos, validações e etc...
Não entrei a fundo sobre as validações, formatação do formulario pois a ideia era mostrar de forma simples como ele funciona caso vc queira um estudo aprofundado nesses caras a documentação do zend esta mt boa ou ainda veja nesse blog onde o autor fala mt bem dos decorators do zend form: blog
Bem pessoal por hoje é só.... valeu!
Nenhum comentário:
Postar um comentário