Balance
  • Namespace
  • Class
  • Tree

Namespaces

  • Balance
    • Db
      • TableGateway
    • Form
      • Element
      • Search
    • InputFilter
      • Search
    • Model
      • Persistence
        • Db
    • Mvc
      • Controller
    • Posting
    • Stdlib
      • Hydrator
        • Strategy
    • View
      • Table

Classes

  • Balance\Db\TableGateway\AbstractTableGatewayFactory
  • Balance\Form\Accounts
  • Balance\Form\Element\Boolean
  • Balance\Form\Element\Currency
  • Balance\Form\Element\DateTime
  • Balance\Form\Element\Select
  • Balance\Form\Postings
  • Balance\Form\Search\Accounts
  • Balance\Form\Search\Balance
  • Balance\Form\Search\Postings
  • Balance\InputFilter\Accounts
  • Balance\InputFilter\Postings
  • Balance\InputFilter\Search\Accounts
  • Balance\InputFilter\Search\Balance
  • Balance\InputFilter\Search\Postings
  • Balance\Model\AbstractModelFactory
  • Balance\Model\AccountType
  • Balance\Model\Balance
  • Balance\Model\BooleanType
  • Balance\Model\EntryType
  • Balance\Model\Model
  • Balance\Model\Persistence\Db\Accounts
  • Balance\Model\Persistence\Db\Balance
  • Balance\Model\Persistence\Db\Postings
  • Balance\Mvc\Controller\AbstractControllerFactory
  • Balance\Mvc\Controller\Accounts
  • Balance\Mvc\Controller\Configs
  • Balance\Mvc\Controller\Home
  • Balance\Mvc\Controller\Postings
  • Balance\Posting\Checker
  • Balance\Stdlib\Hydrator\Strategy\Datetime
  • Balance\View\Table\Table

Interfaces

  • Balance\Model\Persistence\PersistenceInterface
  • Balance\Model\Persistence\ValueOptionsInterface
  • Balance\Mvc\Controller\ModelAwareInterface
  • Balance\Mvc\Controller\RedirectRouteNameAwareInterface

Traits

  • Balance\Mvc\Controller\EditActionTrait
  • Balance\Mvc\Controller\IndexActionTrait
  • Balance\Mvc\Controller\ModelAwareTrait
  • Balance\Mvc\Controller\RedirectRouteNameAwareTrait
  • Balance\Mvc\Controller\RemoveActionTrait

Exceptions

  • Balance\Form\FormException
  • Balance\InputFilter\InputFilterException
  • Balance\Model\ModelException
 1 <?php
 2 
 3 namespace Balance\Mvc\Controller;
 4 
 5 use Balance\Model\ModelException;
 6 use Exception;
 7 use Zend\Mvc\Controller\AbstractActionController;
 8 use Zend\Stdlib\Parameters;
 9 use Zend\View\Model\ViewModel;
10 
11 /**
12  * Trait para Edição de Elementos
13  */
14 trait EditActionTrait
15 {
16     /**
17      * Editar Elemento
18      *
19      * @return ViewModel Modelo de Visualização
20      */
21     public function editAction()
22     {
23         // Controladora?
24         if (! $this instanceof AbstractActionController) {
25             // Erro Encontrado
26             throw new Exception('Invalid Controller');
27         }
28         // Camada de Modelo?
29         if (! $this instanceof ModelAwareInterface) {
30             // Erro Encontrado
31             throw new Exception('Invalid Controller');
32         }
33         // Redirecionamento?
34         if (! $this instanceof RedirectRouteNameAwareInterface) {
35             // Erro Encontrado
36             throw new Exception('Invalid Controller');
37         }
38         // Camada de Modelo
39         $model = $this->getModel();
40         // Chave Primária
41         $params = $this->params()->fromRoute();
42         // Remover Controladora e Ação
43         $params = array_diff_key($params, array_flip(array('controller', 'action')));
44         // Dados Enviados?
45         if ($this->getRequest()->isPost()) {
46             // Captura de Dados
47             $data = $this->getRequest()->getPost();
48             // Tratamento
49             try {
50                 // Salvar Dados
51                 $model->save($data);
52                 // Sucesso
53                 $this->flashMessenger()->addSuccessMessage('Os dados foram salvos com sucesso.');
54                 // Redirecionamento
55                 return $this->redirect()->toRoute($this->getRedirectRouteName());
56             } catch (ModelException $e) {
57                 // Erro Encontrado
58                 $this->flashMessenger()->addWarningMessage('Verifique o preenchimento dos campos em destaque.');
59             }
60         } else {
61             // Chave Primária?
62             if ($params) {
63                 // Tratamento
64                 try {
65                     // Carregar Elemento
66                     $model->load(new Parameters($params));
67                 } catch (ModelException $e) {
68                     // Erro Encontrado
69                     $this->flashMessenger()->addErrorMessage('Impossível carregar os dados solicitados.');
70                     // Redirecionamento
71                     return $this->redirect()->toRoute($this->getRedirectRouteName());
72                 }
73             }
74         }
75         // Utilizar Template do Roteamento
76         $this->getServiceLocator()->get('ViewManager')
77             ->getInjectTemplateListener()->setPreferRouteMatchController(true);
78         // Visualização
79         return new ViewModel(array(
80             'type' => ($params ? 'edit' : 'add'),
81             'form' => $model->getForm(),
82         ));
83     }
84 }
85 
Balance API documentation generated by ApiGen