Esempio n. 1
0
 /**
  * @param RZ\Roadiz\Core\Entities\Node         $node
  * @param RZ\Roadiz\Core\Entities\NodesSources $source
  *
  * @return \Symfony\Component\Form\Form
  */
 private function buildEditSourceForm(Node $node, NodesSources $source)
 {
     $fields = $node->getNodeType()->getFields();
     /*
      * Create source default values
      */
     $sourceDefaults = ['title' => $source->getTitle()];
     foreach ($fields as $field) {
         if (!$field->isVirtual()) {
             $getter = $field->getGetterName();
             if (method_exists($source, $getter)) {
                 $sourceDefaults[$field->getName()] = $source->{$getter}();
             } else {
                 throw new \Exception($getter . ' method does not exist in ' . $node->getNodeType()->getName());
             }
         }
     }
     /*
      * Create subform for source
      */
     $sourceBuilder = $this->getService('formFactory')->createNamedBuilder('source', 'form', $sourceDefaults)->add('title', 'text', ['label' => $this->getTranslator()->trans('title'), 'required' => false, 'attr' => ['data-desc' => '', 'data-dev-name' => '{{ nodeSource.' . StringHandler::camelCase('title') . ' }}']]);
     foreach ($fields as $field) {
         $sourceBuilder->add($field->getName(), $this->getFormTypeFromFieldType($source, $field, $this), $this->getFormOptionsFromFieldType($field));
     }
     return $sourceBuilder->getForm();
 }