<?php namespace Lc\SovBundle\Field; use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface; use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait; use Lc\SovBundle\Form\Common\FileManagerType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; class GalleryManagerField implements FieldInterface { use FieldTrait; public const OPTION_ALLOW_ADD = 'allowAdd'; public const OPTION_ALLOW_DELETE = 'allowDelete'; public const OPTION_ENTRY_IS_COMPLEX = 'entryIsComplex'; public const OPTION_ENTRY_TYPE = 'entryType'; public const OPTION_SHOW_ENTRY_LABEL = 'showEntryLabel'; public static function new(string $propertyName, ?string $label = null): self { return (new self()) ->setProperty($propertyName) ->setLabel($label) ->setTemplatePath('@LcSov/adminlte/crud/field/collection.html.twig') ->setFormType(CollectionType::class) ->addCssClass('field-collection') /*->addWebpackEncoreEntries('adminlte-field-collection') ->addWebpackEncoreEntries('adminlte-field-filemanager')*/ ->setFormTypeOption('allow_add', true) ->setFormTypeOption('allow_delete', true) ->setFormTypeOption('entry_options', array('label'=> false)) ->setFormTypeOption('entry_type', FileManagerType::class) ->setFormTypeOption('attr', array('class'=> 'field-collection-group')) ->setFormTypeOption('row_attr', array('data-sortable'=> true)) ->setCustomOption('managerDir', 'image') ->setCustomOption('type', 'image') ->hideOnIndex(); //->setEntryType(FileManagerType::class); //->setFormTypeOption('show_entry_label', false); } public function allowAdd(bool $allow = true): self { $this->setCustomOption(self::OPTION_ALLOW_ADD, $allow); return $this; } public function allowDelete(bool $allow = true): self { $this->setCustomOption(self::OPTION_ALLOW_DELETE, $allow); return $this; } /** * Set this option to TRUE if the collection items are complex form types * composed of several form fields (EasyAdmin applies a special rendering to make them look better). */ public function setEntryIsComplex(bool $isComplex): self { $this->setCustomOption(self::OPTION_ENTRY_IS_COMPLEX, $isComplex); return $this; } public function setEntryType(string $formTypeFqcn): self { $this->setCustomOption(self::OPTION_ENTRY_TYPE, $formTypeFqcn); return $this; } public function showEntryLabel(bool $showLabel = true): self { $this->setCustomOption(self::OPTION_SHOW_ENTRY_LABEL, $showLabel); return $this; } }