protected function createForm() { $form = new Form(); Container::extensionMethod('addLazyContainer', function ($container, $name, $factory) { return $container[$name] = new LazyContainer($factory); }); $base = $form->addContainer('base'); $base->addText('name', 'Název'); $type = $base->addSelect('type', 'Typ položky', $this->menuTypeOptionFactory->getOptionsBySection($this->sectionId)); $type->setDefaultValue(key($type->getItems())); $type->setAttribute('class', 'change-ajax-submit'); $base->addCheckbox('show', 'Zobrazit')->setDefaultValue(TRUE); $parent = $form->addContainer('parent'); $menu = $parent['id_menu'] = $this->menuFormItemFactory->create($this->sectionId); $menu->setPrompt('---'); $menu->caption = 'Rodičovská kategorie'; $form->addLazyContainer('content', function (LazyContainer $self) use($form, $type) { $values = $self->getFormValues(); $itemType = $values['base']['type']; $this->lazyItemMap->get($itemType)->setup($self, $this->sectionId); }); $form->addSubmit('save', 'Uložit'); $form->onValidate[] = $this->validateNonCircular; $form->onValidate[] = $this->validateAjax; $form->onValidate[] = $this->validateLazyItem; return $form; }
public function setup(LazyContainer $container, $sectionId) { $menu = $container['id_menu'] = $this->menuFormItemFactory->create(); $menu->caption = 'Cílová kategorie'; }