コード例 #1
0
 /**
  * @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.');
 }
コード例 #2
0
 /**
  * @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.');
 }