/** * @param LBoxFormControl control */ public function addControl(LBoxFormControl $control) { try { // multiple rozdelime a prekontrolujeme zvlast if ($control instanceof LBoxFormControlMultiple) { foreach ($control->getControls() as $subControl) { if (array_key_exists($subControl->getName(), $this->controls)) { throw new LBoxExceptionForm($control->getName() . ": " . LBoxExceptionForm::MSG_FORM_CONTROL_DOES_EXISTS, LBoxExceptionForm::CODE_FORM_CONTROL_DOES_EXISTS); } $this->controls[$subControl->getName()] = $subControl; if ($this->form) { $control->setForm($this->form); $this->form->addControl($control); } } } else { // kontrola unikatnosti sub controls mezi sebou if (array_key_exists($control->getName(), $this->controls)) { throw new LBoxExceptionForm($control->getName() . ": " . LBoxExceptionForm::MSG_FORM_CONTROL_DOES_EXISTS, LBoxExceptionForm::CODE_FORM_CONTROL_DOES_EXISTS); } $this->controls[$control->getName()] = $control; $control->setIsSubControl(); /* pokud uz je nastaven form, musime provest kontrolu sub-controls na unikatnost apod - podle toho co Form vyzaduje * toto si sama zaridi metoda LBoxForm::addControl(LBoxFormControlMultiple) */ if ($this->form) { $control->setForm($this->form); $this->form->addControl($this); } } $control->setPersist($this->isPersist); } catch (Exception $e) { throw $e; } }
/** * @param LBoxFormControl $control * @throws LBoxExceptionForm */ public function addControl(LBoxFormControl $control) { try { if (array_key_exists($control->getName(), $this->controls)) { throw new LBoxExceptionForm($control->getName() . ": " . LBoxExceptionForm::MSG_FORM_CONTROL_DOES_EXISTS, LBoxExceptionForm::CODE_FORM_CONTROL_DOES_EXISTS); } // z multistep control prebereme jeho subcontrols if ($control instanceof LBoxFormControlMultiple) { foreach ($control->getControls() as $subControl) { if (!array_key_exists($subControl->getName(), $this->controls)) { $this->controls[$subControl->getName()] = $subControl; } } } if (strtolower($control->getName()) == "previous") { throw new LBoxExceptionFormControl(LBoxExceptionFormControl::MSG_FORM_CONTROL_NAME_FORBIDDEN, LBoxExceptionFormControl::CODE_FORM_CONTROL_NAME_FORBIDDEN); } $this->controls[$control->getName()] = $control; $control->setForm($this); } catch (Exception $e) { throw $e; } }