public function init()
 {
     $this->setMethod('post');
     // инпут для этикетки
     $this->addElement('text', 'name', array('label' => "label:", 'required' => true, 'filters' => array('StringTrim'), 'validators' => array()));
     // селект для типов бутылок
     $this->addElement('select', 'bottle_id', array('label' => 'bottle:', 'required' => true, 'validators' => array('digits')));
     $bottleSelect = $this->getElement('bottle_id');
     // маппер для бутылок
     $bottles = new Application_Model_BottlesMapper();
     // получаем все бутылки
     $allBottles = $bottles->fetchAll();
     // добавлям бутылки в options селекта
     foreach ($allBottles as $bottle) {
         $bottleSelect->addMultiOption($bottle->id, $bottle->name);
     }
     // селект для напитков
     $this->addElement('select', 'beverage_id', array('label' => 'beverage:', 'required' => true, 'validators' => array('digits')));
     $beverageSelect = $this->getElement('beverage_id');
     // маппер для напитков
     $beverages = new Application_Model_BeveragesMapper();
     // получаем все напитки
     $allBeverages = $beverages->fetchAll();
     // добавляем напитки в options селекта
     foreach ($allBeverages as $beverage) {
         $beverageSelect->addMultiOption($beverage->id, $beverage->name);
     }
     // сабмит
     $this->addElement('submit', 'submit', array('ignore' => true, 'label' => 'сохранить'));
 }
Beispiel #2
0
 /**
  * конструктор. определяет поисковый индекс ($this->sIndex).
  * если он не создан, то сначала создаёт его 
  */
 function __construct()
 {
     $this->indexPath = APPLICATION_PATH . '/data/searchindex';
     Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
     try {
         // пытаемся открыть индекс
         $this->sIndex = Zend_Search_Lucene::open($this->indexPath);
     } catch (Zend_Search_Lucene_Exception $e) {
         // если не получалось, то создаём и обновляем
         Zend_Search_Lucene::create($this->indexPath);
         $this->sIndex = Zend_Search_Lucene::open($this->indexPath);
         // плохо, это нужно было вынести, но так мы избавляемся
         // от необходимости инсталяции приложения (индекс,
         // если он отсутствует создастся на лету)
         $beverages = new Application_Model_BeveragesMapper();
         $searchDocs = $beverages->fetchAllSearchDocs();
         // добавляем все документы в индекс
         foreach ($searchDocs as $searchDoc) {
             $doc = $this->createLuceneDoc($searchDoc);
             $this->sIndex->addDocument($doc);
         }
         $this->sIndex->optimize();
     }
 }