/** * @return Form * @throws \Exception */ protected function getClassFromOptions() { if ($this->form instanceof Form) { return $this->form->setName($this->name); } $class = $this->getOption('class'); if (!$class) { throw new \InvalidArgumentException('Please provide full name or instance of Form class.'); } if (is_string($class)) { $formOptions = array_merge(['model' => $this->parent->getModel(), 'name' => $this->name], $this->getOption('formOptions')); $data = array_merge($this->parent->getData(), $this->getOption('data')); return $this->parent->getFormBuilder()->create($class, $formOptions, $data); } if ($class instanceof Form) { if (!$class->getModel()) { $class->setModel($this->parent->getModel()); } if (!$class->getData()) { $class->addData($this->parent->getData()); } return $class->setName($this->name); } throw new \InvalidArgumentException('Class provided does not exist or it passed in wrong format.'); }
/** * @return Form * @throws \Exception */ protected function getClassFromOptions() { if ($this->form instanceof Form) { return $this->form->setName($this->name); } $class = $this->getOption('class'); if (!$class) { throw new \InvalidArgumentException('Please provide full name or instance of Form class.'); } if (is_string($class)) { $options = ['model' => $this->parent->getModel(), 'name' => $this->name, 'language_name' => $this->parent->getLanguageName()]; if (!$this->parent->clientValidationEnabled()) { $options['client_validation'] = false; } if (!$this->parent->haveErrorsEnabled()) { $options['errors_enabled'] = false; } $formOptions = array_merge($options, $this->getOption('formOptions')); $data = array_merge($this->parent->getData(), $this->getOption('data')); return $this->parent->getFormBuilder()->create($class, $formOptions, $data); } if ($class instanceof Form) { $class->setName($this->name, false); $class->setModel($class->getModel() ?: $this->parent->getModel()); if (!$class->getData()) { $class->addData($this->parent->getData()); } if (!$class->getLanguageName()) { $class->setLanguageName($this->parent->getLanguageName()); } if (!$this->parent->clientValidationEnabled()) { $class->setClientValidationEnabled(false); } if (!$this->parent->haveErrorsEnabled()) { $class->setErrorsEnabled(false); } return $class->setName($this->name); } throw new \InvalidArgumentException('Class provided does not exist or it passed in wrong format.'); }