przewiń do treści

Zend Framework od podstaw

Włodzimierz Gajda

<?php
class KontynentController extends My_Crud_Controller
{
    public function init()
    {
        $this->_db_table_class = 'Application_Model_DbTable_Kontynent';
        $this->_form_class = 'Application_Form_Kontynent';
    }
    public function createformAction()
    {
        $this->view->form = new $this->_form_class;
        $this->view->form->dodajKontrolkePanstwa();
        $url = $this->view->url(
            array(
                'action' => 'create',
                'controller' => $this->getRequest()->getControllerName(),
                'module' => $this->getRequest()->getModuleName(),
            ),
            'default',
            true
        );
        $this->view->form->setAction($url);
    }
    public function createAction()
    {
        if ($this->getRequest()->isPost()) {
            $form = new $this->_form_class;
            $form->dodajKontrolkePanstwa();
            if ($form->isValid($this->getRequest()->getPost())) {
                $data = $form->getValues();
                $DbTable = new $this->_db_table_class;
                $obj = $DbTable->createRow($data);
                $id = $obj->save();
                $obj->dodajPanstwa($data['panstwa']);
                return $this->_helper->redirector(
                    'edit',
                    $this->getRequest()->getControllerName(),
                    $this->getRequest()->getModuleName(),
                    array('id' => $id)
                );
            }
            $this->view->form = $form;
        } else {
            throw new Zend_Controller_Action_Exception('Błędny adres!', 404);
        }
    }

    public function showAction()
    {
        $slug = $this->_request->getParam('slug', 'brak');
        $Kontynent = new Application_Model_DbTable_Kontynent();
        $this->view->kontynent = $Kontynent->findOneBySlug($slug);
        if (!$this->view->kontynent) {
            throw new Zend_Controller_Action_Exception('Błąd', $slug), 404);
        }
    }
    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());
        $this->view->form->dodajKontrolkePanstwa($obj);
        $url = $this->view->url(
            array(
                'action' => 'update',
                'controller' => $this->getRequest()->getControllerName(),
                'id' => $id
            ),
            'default',
            true
        );
        $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;
            $form->dodajKontrolkePanstwa($obj);
            if ($form->isValid($this->getRequest()->getPost())) {
                $data = $form->getValues();
                $obj->setFromArray($data);
                $obj->save();
                $obj->dodajPanstwa($data['panstwa']);
                return $this->_helper->redirector(
                    'edit',
                    $this->getRequest()->getControllerName(),
                    null,
                    array('id' => $id)
                );
            }
            $this->view->form = $form;
        } else {
            throw new Zend_Controller_Action_Exception('Błędny adres!', 404);
        }
    }
}

Listing 32.8. Kontroler KontynentController

Rozdział 32. Edycja zależności relacyjnych

listing-32-08.txt