public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('slug', null, ['attr' => ['autofocus' => 'autofocus']])->add('is_enabled')->add('position')->add('meta', MetaFormType::class, ['label' => 'Meta tags']); foreach ($this->configuration->getStructures() as $structure) { $optionsCat = ['label' => $structure->getTitleForm(), 'required' => $structure->getIsRequired(), 'expanded' => $structure->isMultipleEntries(), 'multiple' => $structure->isMultipleEntries(), 'class' => $this->configuration->getTaxonClass()]; /** @var TaxonModel $taxon */ foreach ($options['data']->getTaxonsSingle() as $taxon) { if ($taxon->getStructure()->getName() === $structure->getName()) { if ($structure->isMultipleEntries()) { $optionsCat['data'][] = $taxon; } else { $optionsCat['data'] = $taxon; break; } } } $optionsCat['unicat_structure'] = $structure; $builder->add('structure:' . $structure->getName(), TaxonTreeType::class, $optionsCat); } /** @var $attribute AttributeModel */ foreach ($this->unicat->getAttributes($this->configuration) as $attribute) { $type = $attribute->getType(); $propertyOptions = ['required' => $attribute->getIsRequired(), 'label' => $attribute->getTitle()]; $attributeOptions = array_merge($propertyOptions, $attribute->getParam('form')); if ($attribute->isType('image')) { // @todo сделать виджет загрузки картинок. //$type = 'genemu_jqueryimage'; $type = AttributeImageFormType::class; if (isset($options['data'])) { $attributeOptions['data'] = $options['data']->getAttribute($attribute->getName()); } } if ($attribute->isType('select')) { $type = ChoiceType::class; } if ($attribute->isType('multiselect')) { $type = ChoiceType::class; $attributeOptions['expanded'] = true; //$propertyOptions['multiple'] = true; // @todo FS#407 продумать мультиселект } if (isset($attributeOptions['constraints'])) { $constraintsObjects = []; foreach ($attributeOptions['constraints'] as $constraintsList) { foreach ($constraintsList as $constraintClass => $constraintParams) { $_class = '\\Symfony\\Component\\Validator\\Constraints\\' . $constraintClass; $constraintsObjects[] = new $_class($constraintParams); } } $attributeOptions['constraints'] = $constraintsObjects; } $type = $this->resolveTypeName($type); $builder->add('attribute:' . $attribute->getName(), $type, $attributeOptions); } }