<?php namespace Lc\SovBundle\Field; use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface; use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait; use Lc\SovBundle\Form\Type\Crud\FileManagerType; use Symfony\Component\Form\Extension\Core\Type\TextType; /** * @author Javier Eguiluz <javier.eguiluz@gmail.com> */ final class FileManagerField implements FieldInterface { use FieldTrait; public const OPTION_MAX_LENGTH = 'maxLength'; public const OPTION_RENDER_AS_HTML = 'renderAsHtml'; public static function new(string $propertyName, ?string $label = null): self { return (new self()) ->setProperty($propertyName) ->setLabel($label) ->setTemplatePath('@LcSov/adminlte/crud/field/file.html.twig') /*->addWebpackEncoreEntries('adminlte-field-filemanager')*/ ->setCustomOption('managerDir', 'file') ->setCustomOption('type', 'file') ->setFormType(FileManagerType::class) ->addCssClass('field-text') ->setCustomOption(self::OPTION_MAX_LENGTH, null) ->setCustomOption(self::OPTION_RENDER_AS_HTML, false); } public function setMaxLength(int $length): self { if ($length < 1) { throw new \InvalidArgumentException(sprintf('The argument of the "%s()" method must be 1 or higher (%d given).', __METHOD__, $length)); } $this->setCustomOption(self::OPTION_MAX_LENGTH, $length); return $this; } public function renderAsHtml(bool $asHtml = true): self { $this->setCustomOption(self::OPTION_RENDER_AS_HTML, $asHtml); return $this; } }