public function editAction() { $this->_helper->layout()->setLayout('submenu'); $id = $this->_getParam('id'); $category = Model_Hm_Category::findOneByIdForAdmin($id)->fetchOne(); $form = $this->_getForm(); $this->view->form = $form; $form->populate($category->toArray(true)); if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) { $category->fromArray($form->getValues()); $category->save(); $this->_helper->redirector('admin'); } }
public function init() { /* * * Settings * */ $this->setName('holidayhome'); $this->setMethod('post'); /* * * Elements * */ $element = new Zend_Form_Element_Select('hm_geo_city_id'); $element->setLabel('Plaats')->addMultiOption('', '...')->setRequired(true); $geo = Doctrine_Query::create()->from('Model_Hm_Geo_City c')->leftJoin('c.Region r, r.Country y, y.Translation tr')->where('tr.lang = ?', Model_Lang::getCurrent())->orderBy('tr.name, r.name, c.name')->execute(); foreach ($geo as $city) { $element->addMultiOption($city->id, $city->Region->Country->translationHandler()->name . " - " . $city->Region->name . " - " . $city->name); } $this->addElement($element); $element = new Zend_Form_Element_Select('hm_owner_id'); $element->setLabel('Eigenaar')->addMultiOption('', '...')->setRequired(true); $owners = Doctrine_Query::create()->from('Model_Hm_Owner o')->leftJoin('o.User u')->orderBy('u.surname')->select('o.id')->execute(); foreach ($owners as $owner) { $label = $owner->User->surname . ', ' . $owner->User->initials . ' ' . $owner->User->insertion . ' - (' . $owner->debtor_no . ')'; $element->addMultiOption($owner->id, $label); } $this->addElement($element); $element = new Zend_Form_Element_Select('active'); $element->setLabel('Actief')->setRequired(true)->addMultiOption('', '...')->addMultiOption('true', 'Actief')->addMultiOption('false', 'Niet actief'); $this->addElement($element); $element = new Zend_Form_Element_Text('name'); $element->setLabel('Naam')->setValidators(array(array('stringLength', null, array('min' => 4, 'max' => 128))))->setAttrib('maxlength', 128)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('address'); $element->setLabel('Straat')->setValidators(array(array('stringLength', null, array('min' => 4, 'max' => 128))))->setAttrib('maxlength', 128)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('number'); $element->setLabel('Huisnummer')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('code'); $element->setLabel('Code')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('zipcode'); $element->setLabel('Postcode')->setValidators(array(array('stringLength', null, array('min' => 2, 'max' => 8))))->setAttrib('maxlength', 8)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('surface_lot'); $element->setLabel('Kavel')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6); $this->addElement($element); $element = new Zend_Form_Element_Text('surface_build'); $element->setLabel('Bebouwd')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6); $this->addElement($element); $element = new Zend_Form_Element_Text('persons'); $element->setLabel('Personen')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('bedrooms'); $element->setLabel('Slaapkamers')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('toilets'); $element->setLabel('Toiletten')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('showers'); $element->setLabel('Badkamers')->setValidators(array(array('digits')))->setFilters(array(array('int')))->setAttrib('maxlength', 6)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('coordinate'); $element->setLabel('Coordinaat')->setValidators(array(array('stringLength', null, array('min' => 8, 'max' => 32))))->setAttrib('maxlength', 32)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('price'); $element->setLabel('Basisprijs')->setAttrib('maxlength', 20)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('extra_percentage'); $element->setLabel('Gebroken week percentage')->setAttrib('maxlength', 20)->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Text('maintenance_central_heating'); $element->setLabel('Onderhoud centrale verwarming')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('maintenance_garden'); $element->setLabel('Onderhoud tuin')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('insurance_name'); $element->setLabel('Verzekerinig')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('wifi_password'); $element->setLabel('Wifi wachtwoord')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('insurance_policy_no'); $element->setLabel('Polisnummer')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('insurance_agent'); $element->setLabel('Contactpersoon')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Text('insurance_phone_no'); $element->setLabel('Telefoonnummer')->setValidators(array(array('stringLength', null, array('max' => 128))))->setAttrib('maxlength', 128); $this->addElement($element); $element = new Zend_Form_Element_Select('vat_publish'); $element->setLabel('Belasting plichtig')->addMultiOption(null, '..')->addMultiOption('true', 'Ja')->addMultiOption('false', 'Nee')->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_Select('vat_outside'); $element->setLabel('Belasting buitenland')->addMultiOption(null, '..')->addMultiOption('true', 'Ja')->addMultiOption('false', 'Nee')->setRequired(true); $this->addElement($element); $element = new Zend_Form_Element_MultiCheckbox('Categories'); $element->setLabel('Categorieen waar woning in hoort'); $categories = Model_Hm_Category::listAll()->execute(); foreach ($categories as $category) { $element->addMultiOption($category->id, $category->translationHandler()->name); } $this->addElement($element); $element = new Zend_Form_Element_MultiCheckbox('Options'); $element->setLabel('Kenmerken van deze woning'); $options = Model_Hm_Op_Option::listAll()->execute(); foreach ($options as $option) { $element->addMultiOption($option->id, $option->Category->translationHandler()->name . ' - ' . $option->translationHandler()->name); } $this->addElement($element); $element = new Zend_Form_Element_Submit('holidayhome_submit'); $element->setLabel('Verwerken')->setAttrib('class', 'submit'); $this->addElement($element); /* * * Translations * */ // Create new translations subform $subForm = new Zend_Form_SubForm('Translation'); // Run all languages foreach (Model_Hm_Lang::listAll() as $lang) { // Create subform for language $subSubForm = new Zend_Form_SubForm($lang->code); // Create description field $element = new Zend_Form_Element_Textarea('description'); $element->setLabel('Omschrijving')->setAttrib('class', 'autoexpand')->setAttrib('rows', 2)->setAttrib('cols', 24)->setRequired(true)->setValidators(array(array('stringLength', false, array('min' => 40)))); $subSubForm->addElement($element); // Add description field to language subform // Put each language in different fieldset $subSubForm->addDisplayGroup(array('description'), $lang->code, array('class' => 'textarea', 'legend' => 'Vertaling - ' . $lang->name)); // Add language subform to Translation subform $subForm->addSubForm($subSubForm, $lang->code); } // Add Translation subform to normal form $this->addSubForm($subForm, 'Translation', 19); /* * * Display groups * */ $this->addDisplayGroup(array('Options'), 'OptionsGroup', array('class' => 'checkboxes', 'legend' => 'Kenmerken', 'order' => 17)); $this->addDisplayGroup(array('address', 'number', 'zipcode', 'code', 'hm_geo_city_id'), 'Adres', array('legend' => 'Adres', 'order' => 2)); $this->addDisplayGroup(array('persons', 'bedrooms', 'toilets', 'showers'), 'Indeling', array('legend' => 'Indeling', 'order' => 3)); $this->addDisplayGroup(array('surface_lot', 'surface_build'), 'Oppervlakte', array('legend' => 'Oppervlakte', 'order' => 6)); $this->addDisplayGroup(array('vat_publish', 'vat_outside'), 'Belasting', array('legend' => 'Belasting', 'order' => 5)); $this->addDisplayGroup(array('price', 'extra_percentage'), 'Prijscalculatie', array('legend' => 'Prijscalculatie', 'order' => 4)); $this->addDisplayGroup(array('maintenance_central_heating', 'maintenance_garden', 'wifi_password'), 'hulpdiensten', array('legend' => 'Overige', 'order' => 11)); $this->addDisplayGroup(array('insurance_name', 'insurance_policy_no', 'insurance_agent', 'insurance_phone_no'), 'verzekering', array('legend' => 'Verzekering', 'order' => 10)); $this->addDisplayGroup(array('Categories'), 'categoriesgroup', array('legend' => 'Categorieen', 'class' => 'checkboxes', 'order' => 12)); $this->addDisplayGroup(array('hm_owner_id', 'active', 'name', 'coordinate'), 'algemeen', array('legend' => 'Algemeen', 'order' => 1)); $this->addDisplayGroup(array('holidayhome_submit'), 'submit', array('order' => 20, 'class' => 'submit')); /* * * Decorators * */ $decorators = array('FormElements', 'Form'); $displayGroupDecorators = array('Description', 'FormElements', 'Fieldset'); $elementDecorators = array('Description', 'ViewHelper', 'Errors', array(array('p' => 'HtmlTag'), array('tag' => 'p')), array('Label', array('tag' => 'p'))); $subDecorators = array('FormElements'); $subDisplayGroupDecorators = array('Description', 'FormElements', 'Fieldset', array('HtmlTag', array('tag' => 'div'))); $subElementDecorators = array('Description', 'ViewHelper', 'Errors', array(array('p' => 'HtmlTag'), array('tag' => 'p')), array('Label', array('tag' => 'p'))); /* * * Set decorators * */ $this->setDecorators($decorators)->setElementDecorators($elementDecorators)->setDisplayGroupDecorators($displayGroupDecorators); $translation = $this->getSubForm('Translation')->setDecorators($subDecorators)->setDisplayGroupDecorators($subDisplayGroupDecorators)->setElementDecorators($subElementDecorators); $subsubforms = $translation->getSubForms(); foreach ($subsubforms as $subsubform) { $subsubform->setDecorators($subDecorators)->setDisplayGroupDecorators($subDisplayGroupDecorators)->setElementDecorators($subElementDecorators); } $submit = $this->getElement('holidayhome_submit'); $submit->setDecorators(array('ViewHelper')); }