/** * редактирование напитка */ public function editAction() { // получаем id напитка (используется роутер editbeverages, см. конфиг в /configs/routes.ini) $beverageId = $this->_getParam('beverageId'); if (is_numeric($beverageId)) { $beverage = $this->beverages->find($beverageId); // если нашли напиток с данным id, то показываем его // если нет, показываем 404 if (null != $beverage) { $form = new Application_Form_Beverages(); // если есть переданные postом данные if ($this->getRequest()->isPost()) { $request = $this->getRequest(); // и они валидны if ($form->isValid($request->getPost())) { // создаём объект напитка с данными полученными из формы $beverage = new Application_Model_Beverages($form->getValues()); // сохраняем напиток $this->beverages->save($beverage); // обновляем поисковый индекс (см. примечание к индекс-экшну) $searchDoc = new Application_Model_SearchDoc(); $searchDoc->setId($beverage->id)->setContent($beverage->description)->setTitle($beverage->name)->setType('beverage'); $search = new Application_Model_Search(); $search->updateInIndex($searchDoc); // добавляем сообщение об удачном изменении $this->_flashMessenger->addMessage('Напиток ' . $beverage->getName() . ' изменён'); // направляемся на страницу этого напитка return $this->_helper->redirector->gotoRoute(array('action' => 'view', 'controller' => 'beverages', 'beverageId' => $beverage->id), 'beverages'); } } else { // если переданных данных нет, то добавляем // в форму для редактирования данные напитка $form->setDefaults(array('name' => $beverage->name, 'description' => $beverage->description, 'id' => $beverage->id)); } // отправляем в вид форму и напиток $this->view->form = $form; $this->view->beverage = $beverage; } else { throw new Zend_Controller_Action_Exception('beverage not found', 404); } } else { throw new Zend_Controller_Action_Exception('invalid format of beverage id: ' . $bottleId, 404); } }