コード例 #1
0
 /**
  * редактирование напитка
  */
 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);
     }
 }