public function indexAction()
 {
     // форма для добавления нап.бутылок
     $form = new Application_Form_FilledBottle();
     // если есть post данные
     if ($this->getRequest()->isPost()) {
         $request = $this->getRequest();
         // и они валидны
         if ($form->isValid($request->getPost())) {
             // создаём объект нап.бутылки (попутно объект её бутылки и напитка)
             $formValues = $form->getValues();
             $filledBottle = new Application_Model_FilledBottles();
             $bottle = new Application_Model_Bottles();
             $bottle->setId($formValues['bottle_id']);
             $beverage = new Application_Model_Beverages();
             $beverage->setId($formValues['beverage_id']);
             $filledBottle->setName($formValues['name'])->setBeverage($beverage)->setBottle($bottle);
             // сохраняем новую нап.бутылку
             $this->filledBottles->save($filledBottle);
             // добавляем сообщение об удачном добавлении
             $this->_flashMessenger->addMessage('Наполненная бутылка ' . $filledBottle->getName() . ' добавлена');
             return $this->_helper->redirector('index');
         }
     }
     // отправляем нап.бутылку и форму в вид
     $this->view->filledBottles = $this->filledBottles->fetchAll();
     $this->view->form = $form;
 }
 /**
  * создает объект наполненной бутылки
  *
  * @param Object $row
  * @return Application_Model_FilledBottles $bottle
  */
 private function createFilledBottle($row)
 {
     // создаём объект бутылки
     $bottle = new Application_Model_Bottles();
     $bottle->setId($row->bottle_id)->setName($row->bottle_name)->setDescription($row->bottle_description)->setImg($row->bottle_img_src);
     // создаём объект напитка
     $beverage = new Application_Model_Beverages();
     $beverage->setId($row->beverage_id)->setName($row->beverage_name)->setDescription($row->beverage_description);
     // создаём объект наполненной бутылки
     $filledBottle = new Application_Model_FilledBottles();
     $filledBottle->setId($row->id)->setName($row->name)->setBottle($bottle)->setBeverage($beverage);
     return $filledBottle;
 }
 /**
  * сохраняет напиток
  *
  * @param Application_Model_Beverages $beverage
  * @return Application_Model_Beverages $beverage
  */
 public function save(Application_Model_Beverages $beverage)
 {
     $data = array('name' => $beverage->getName(), 'description' => $beverage->getDescription());
     // если напитка не существовало, то добавляем строку в бд
     // и устанавливаем объекту соответствующий id
     if (null === ($id = $beverage->getId())) {
         $id = $this->getDbTable()->insert($data);
         $beverage->setId($id);
     } else {
         // если существовал, то делаем update
         $this->getDbTable()->update($data, array('id = ?' => $id));
     }
     return $beverage;
 }
 /**
  * удаление напитка
  */
 public function deleteAction()
 {
     // получаем id напитка (используется роутер deletebeverages, см. конфиг в /configs/routes.ini)
     $beverageId = $this->_getParam('beverageId');
     if (is_numeric($beverageId)) {
         $beverage = $this->beverages->find($beverageId);
         if (null != $beverage) {
             $form = new Application_Form_DeleteBeverages();
             if ($this->getRequest()->isPost()) {
                 $request = $this->getRequest();
                 if ($form->isValid($request->getPost())) {
                     // если всё в порядке, создаём объект напитка
                     $beverage = new Application_Model_Beverages();
                     $formValues = $form->getValues();
                     $beverage->setId($formValues['id']);
                     // удаляем напиток
                     $this->beverages->delete($beverage);
                     // обновляем поисковый индекс (см. примечание к индекс-экшну)
                     $searchDoc = new Application_Model_SearchDoc();
                     $searchDoc->setId($beverage->id);
                     $search = new Application_Model_Search();
                     $search->deleteFromIndex($searchDoc);
                     // добавляем сообщение об удачном удалении
                     $this->_flashMessenger->addMessage('Напиток удалён');
                     return $this->_helper->redirector('index');
                 }
             } else {
                 $form->setDefaults(array('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);
     }
 }