Beleza galera, antes de fecha o ano vamos de mais uma aula sobre Zend Form, veremos como popular nosso form para edição, e como atualizar seus dados.
Controller Post
public function addAction()
{
$form = new Application_Form_Post();
$model = new Application_Model_Post;
$id = $this->_getParam('id');
if($this->_request->isPost()){
if($form->isValid($this->_request->getPost())){
$data = $form->getValues();
if($id){
$where = $model->getAdapter()->quoteInto('id = ?',$id);
$model->update($data,$where);
}else{
$model->insert($data);
}
$this->_redirect('/post');
}
}elseif($id){
$data = $model->busca($id);
if(is_array($data)){
$form->setAction('/post/add/id/' . $id);
$form->populate($data);
}
}
$this->view->form = $form;
}
Model Post
public function busca($id){
try{
$sql = $this->select()
->where('id =?', $id);
$row = $this->fetchRow($sql);
if(null !== $row)
return $row->toArray();
}catch(Exception $e){
return $e->getMessage();
}
}
Olá Felipe,
Parabéns pela iniciativa, as Vídeo Aulas são muito boas mesmo!!
Só tenho uma pergunta.
Ao adicionar um registro no banco de dados, como evitar que o mesmo registro seja inserido mais vezes? Por exemplo, preenchi o formulário e enviei, até aí tudo bem, mas se eu clicar no botão VOLTAR no meu navegador ele retorna para a página do formulário com os dados já preenchidos e se o usuário clicar em enviar novamente os mesmos registros serão recadastrados!
Encontrei algumas coisas sobre o Zend_Form_Element_Hash, mas não consegui resolver este problema. Teria alguma solução para isso, sem ter que fazer uma consulta no Banco de Dados?
Obrigado.
Novamente parabéns pelo trabalho.
@Rodolfo, tem um validator excelente para este caso é o Zend_Validate_Db_NoRecordExists, exemplos de uso dele você pode encontrar aqui: http://stackoverflow.com/questions/2180653/zend-form-edit-and-zend-validate-db-norecordexists
e aqui: http://framework.zend.com/manual/en/zend.validate.set.html
Obrigado, acho que esse Validator resolve meu problema.
Olá Felipe, ótimo tutorial, admiro este trabalho pois começar com ZF e realmente complicado com aquela documentação hehehe, gostaria de saber se vc tem intenção de fazer algo relacionado aos decorators? ou até mesmo com relação ao uso de jquery ou dojo, o ZF consegue tratar estas duas tecnologias internamente não é ? ( algo parecido com xajax ).
Boa sorte continue com os tutorias até mais.
Hicaro Rios, os Decorators são um negócio muito chato, vou falar deles na próxima video aula, vou ver se posto nesta semana ainda. Quanto ao dojo e ao jquery o zend trabalha com eles tambem, o jquery com a lib extra ZendX_Jquery, não to muito familirializado com eles, eu uso o ainda o jquery normal, quando tiver um tempo sobrando vou dar um estuda neles.