<?php class IndexController extends Zend_Controller_Action { protected $_db_table_class = 'Application_Model_DbTable_Imie'; protected $_form_class = 'Application_Form_Imie'; public function indexAction() { $DbTable = new $this->_db_table_class; $this->view->objects = $DbTable->fetchAll(); } public function createformAction() { $this->view->form = new $this->_form_class; $url = $this->view->url(array('action' => 'create')); $this->view->form->setAction($url); } public function createAction() { if ($this->getRequest()->isPost()) { $form = new $this->_form_class; if ($form->isValid($this->getRequest()->getPost())) { $data = $form->getValues(); $DbTable = new $this->_db_table_class; $id = $DbTable->insert($data); return $this->_helper->redirector( 'edit', 'index', null, array('id' => $id) ); } $this->view->form = $form; } else { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } } public function deleteAction() { $id = $this->getRequest()->getParam('id'); $DbTable = new $this->_db_table_class; $obj = $DbTable->find($id)->current(); if (!$obj) { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } $obj->delete(); return $this->_helper->redirector('index'); } public function editAction() { $id = $this->getRequest()->getParam('id'); $DbTable = new $this->_db_table_class; $obj = $DbTable->find($id)->current(); if (!$obj) { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } $this->view->form = new $this->_form_class; $this->view->form->populate($obj->toArray()); $url = $this->view->url(array('action' => 'update', 'id' => $id)); $this->view->form->setAction($url); $this->view->object = $obj; } public function updateAction() { $id = $this->getRequest()->getParam('id'); $DbTable = new $this->_db_table_class; $obj = $DbTable->find($id)->current(); if (!$obj) { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } if ($this->getRequest()->isPost()) { $form = new $this->_form_class; if ($form->isValid($this->getRequest()->getPost())) { $data = $form->getValues(); $obj->setFromArray($data); $obj->save(); return $this->_helper->redirector( 'edit', 'index', null, array('id' => $id) ); } $this->view->form = $form; } else { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } } public function showAction() { $id = $this->getRequest()->getParam('id'); $DbTable = new $this->_db_table_class; $obj = $DbTable->find($id)->current(); if (!$obj) { throw new Zend_Controller_Action_Exception('Błędny adres!', 404); } $this->view->object = $obj; } }
Listing 28.14. Kontroler sparametryzowany właściwościami $_db_table_class oraz $_form_class
Rozdział 28. Przetwarzanie formularza, czyli implementacja interfejsu CRUD