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' => 'сохранить')); }
/** * конструктор. определяет поисковый индекс ($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(); } }