Nextras\Datagrid\Datagrid::createComponentForm PHP Метод

createComponentForm() публичный Метод

public createComponentForm ( )
    public function createComponentForm()
    {
        $form = new UI\Form();
        if ($this->filterFormFactory) {
            $form['filter'] = call_user_func($this->filterFormFactory);
            if (!isset($form['filter']['filter'])) {
                $form['filter']->addSubmit('filter', $this->translate('Filter'));
            }
            if (!isset($form['filter']['cancel'])) {
                $form['filter']->addSubmit('cancel', $this->translate('Cancel'));
            }
            $this->filterDefaults = [];
            foreach ($form['filter']->controls as $name => $control) {
                $this->filterDefaults[$name] = $control->getValue();
            }
            $this->filterDefaults = $this->filterFormFilter($this->filterDefaults);
            if (!$this->filterDataSource) {
                $this->filterDataSource = $this->filterDefaults;
            }
        }
        if ($this->editFormFactory && ($this->editRowKey !== null || !empty($_POST['edit']))) {
            $data = $this->editRowKey !== null && empty($_POST) ? $this->getData($this->editRowKey) : null;
            $form['edit'] = call_user_func($this->editFormFactory, $data);
            if (!isset($form['edit']['save'])) {
                $form['edit']->addSubmit('save', 'Save');
            }
            if (!isset($form['edit']['cancel'])) {
                $form['edit']->addSubmit('cancel', 'Cancel');
            }
            if (!isset($form['edit'][$this->rowPrimaryKey])) {
                $form['edit']->addHidden($this->rowPrimaryKey);
            }
            $form['edit'][$this->rowPrimaryKey]->setDefaultValue($this->editRowKey)->setOption('rendered', true);
        }
        if ($this->translator) {
            $form->setTranslator($this->translator);
        }
        $form->onSuccess[] = function () {
        };
        // fix for Nette Framework 2.0.x
        $form->onSubmit[] = [$this, 'processForm'];
        return $form;
    }