/** * @param IControlConfig $config * @return NULL|Controls\MultiChoiceControl */ public function createControl(IControlConfig $config) { $control = NULL; if ($config->getType() === IControlConfig::CHECKBOX_LIST) { $control = new Controls\CheckboxList($config->getLabel()); } elseif ($config->getType() === IControlConfig::MULTI_SELECT) { $control = new Controls\MultiSelectBox($config->getLabel()); } // Setup items if ($control && ($items = $this->helper->processItems($control, $config)) !== NULL) { $control->setItems($items); } return $control; }
/** * @param IControlConfig $config * @return NULL|Controls\ChoiceControl */ public function createControl(IControlConfig $config) { $control = NULL; if ($config->getType() === IControlConfig::RADIO_LIST) { $control = new Controls\RadioList($config->getLabel()); } elseif ($config->getType() === IControlConfig::SELECT) { $control = new Controls\SelectBox($config->getLabel()); $control->setPrompt($config->getOption(IControlConfig::PROMPT) ?: FALSE); } // Setup items if ($control && ($items = $this->helper->processItems($control, $config)) !== NULL) { $control->setItems($items); } return $control; }
/** * Create control from configuration or return NULL if factory does not match config. * * @param IControlConfig $config * @throws \NForms\Exceptions\InvalidStateException * @return NULL|BaseControl */ public function createControl(IControlConfig $config) { if ($config->getType() === self::TYPE) { if (($itemsCallback = $config->getOption(self::ITEMS_CALLBACK)) === NULL) { throw new InvalidStateException("Missing NForms\\Extensions\\DependentSelectBox::DATA_CALLBACK option in control configuration."); } $callback = function ($form, $input) use($config, $itemsCallback) { $items = call_user_func_array($itemsCallback, func_get_args()); return $this->helper->processItems($input, $config, $items); }; $parents = $config->getOption(self::PARENTS); $control = new DependentSelectBox($config->getLabel(), $callback, $parents ?: array()); $control->setPrompt($config->getOption(self::PROMPT) ?: FALSE); return $control; } return NULL; }