O Framework Zend 2, possui um recurso muito interessante, e
prático, que é a possibilidade de se criar formulários separados da camada de
visão.
No início pode parecer meio confuso, ou até mesmo
desnecessário, mas conforme vamos utilizando, vemos sua total praticidade:
- A possibilidade de incluir ou remover um campo sem mexer, e possivelmente quebrar, o HTML;
- Definir um campo como necessário ou não;
- Trocar o nome do campo do formulário;
- Tratar a validação do formulário e etc.
Vamos fazer um exemplo prático que será utilizado
futuramente para gravar um registro no banco de dados.
Vamos abrir o Eclipse PDT e criar a pasta “Form” dentro de “module/Usuario/src/Usuario”
Dentro da pasta Form, que acabamos de criar,
vamos criar o arquivo CadastroForm.php com o seguinte conteúdo:
<?php
namespace Usuario\Form;
use Zend\Form\Form;
class CadastroForm extends Form {
public function __construct($fieldset) {
parent::__construct($fieldset);
$this->setAttribute('method', 'post');
$this->add(array(
'name' => 'nome',
'attributes' => array(
'type' => 'text',
),
'options' => array(
'label' => 'Nome',
)
));
$this->add(array(
'name' => 'email',
'attributes' => array(
'type' => 'text',
),
'options' => array(
'label' => 'Email',
),
));
$this->add(array(
'name' => 'password',
'attributes' => array(
'type' => 'password',
),
'options' => array(
'label' => 'Senha',
),
));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Gravar',
'id' => 'submitbuton',
),
));
}
}
Nosso CadastroController.php, agora, ficou assim:
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link
http://github.com/zendframework/ZendSkeletonApplication for the
canonical source repository
* @copyright Copyright (c)
2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license
http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Usuario\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Usuario\Form\CadastroForm;
class CadastroController extends AbstractActionController
{
public
function indexAction()
{
return
new ViewModel();
}
public
function adicionarAction() {
$form = new CadastroForm('cadastro');
$form->get('submit')->setValue('Cadastrar');
return array('form' => $form);
}
public
function apagarAction() {
}
public
function editarAction() {
}
}
Vamos exibir agora o nosso formulário. Abra o
arquivo adicionar.phtml da pasta “module/Usuario/view/usuario/cadastro” e cole
o seguinte código:
<?php
$title = 'Novo Cadastro';
$this->headtitle($title);
?>
<h1><?=$this->escapehtml($title) ?></h1>
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('cadastro', array('action' => 'adicionar')));
$form->prepare();
?>
<?=$this->form()->openTag($form)?>
<?=$this->formCollection($this->form)?>
<?=$this->form()->closeTag($form)?>
Explore a documentação do Zend para a lista completa dos atributos
Nenhum comentário:
Postar um comentário