/** * Přesměruje zpět na RequestButton a potlačí v uživatelských událostech případný redirect. * * @return self * @throw AbortException */ public function fireEvents() { try { parent::fireEvents(); } catch (AbortException $e) { } RequestButtonHelper::redirectBack($this); if (isset($e)) { throw $e; } }
public function saveItem($input) { $form = new AppForm(); $form = $input; $values = $form->getValues(); $update = false; if (isset($this->request->post['id'])) { $id = $this->request->post['id']; $update = true; } else { $id = 0; } try { if ($update) { $this->items->update($id, $values); } else { $id = $this->items->insert($values); } } catch (DibiException $e) { $this->flashMessage('Error! ' . $e->getMessage(), 'err'); } $this->cleanCache('application/system', 'localities'); if ($form['save']->isSubmittedBy()) { $this->flashMessage('Item has been saved.', 'ok'); \RequestButton\RequestButtonHelper::redirectBack(); $this->redirect('edit', array('id' => $id)); } elseif ($form['add']->isSubmittedBy()) { $this->flashMessage('Item has been saved.', 'ok'); $this->redirect('add'); } else { $this->flashMessage('Item has been saved.', 'ok'); $this->redirect('default'); } }
/** * Upraví formulář pro potřeby RequestButtonu. * Přidá do action backlink, aby formulář i po odeslání věděl kam se má vrátit. * Když je vráceno na určitý stav formuláře, nastaví mu data. * MUSÍ SE VOLAT PO přidání všech FormControlů do Formu a po připojení na Presenter. * MÍSTO VOLÁNÍ TÉTO FUNCKE SE MÚŽE POUŽÍT JAKO FORM RequestButtonReceiver * * @param AppForm * @see RequestButtonReceiver * */ public static function prepareForm(AppForm $form) { if (!$form instanceof RequestButtonReceiver) { if ($form->getPresenter(false)) { $form->setAction(RequestButtonHelper::prepareAction($form, $form->getAction())); $form->setValues(RequestButtonHelper::prepareHttpData($form, $form->getHttpData())); foreach ($form->getComponents(TRUE, 'RequestButton') as $rb) { $rb->formIsPrepared = true; } } else { throw new InvalidStateException("Form is not attached to Presenter."); } } }