Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

51 linhas
1.7KB

  1. <?php
  2. namespace Lc\SovBundle\Field;
  3. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
  4. use EasyCorp\Bundle\EasyAdminBundle\Field\FieldTrait;
  5. use Lc\SovBundle\Form\Type\FileManagerType;
  6. use Symfony\Component\Form\Extension\Core\Type\TextType;
  7. /**
  8. * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  9. */
  10. final class FileManagerField implements FieldInterface
  11. {
  12. use FieldTrait;
  13. public const OPTION_MAX_LENGTH = 'maxLength';
  14. public const OPTION_RENDER_AS_HTML = 'renderAsHtml';
  15. public static function new(string $propertyName, ?string $label = null): self
  16. {
  17. return (new self())
  18. ->setProperty($propertyName)
  19. ->setLabel($label)
  20. ->setTemplatePath('@LcSov/adminlte/crud/field/file.html.twig')
  21. ->addWebpackEncoreEntries('adminlte-field-filemanager')
  22. ->setFormType(FileManagerType::class)
  23. ->addCssClass('field-text')
  24. ->setCustomOption(self::OPTION_MAX_LENGTH, null)
  25. ->setCustomOption(self::OPTION_RENDER_AS_HTML, false);
  26. }
  27. public function setMaxLength(int $length): self
  28. {
  29. if ($length < 1) {
  30. throw new \InvalidArgumentException(sprintf('The argument of the "%s()" method must be 1 or higher (%d given).', __METHOD__, $length));
  31. }
  32. $this->setCustomOption(self::OPTION_MAX_LENGTH, $length);
  33. return $this;
  34. }
  35. public function renderAsHtml(bool $asHtml = true): self
  36. {
  37. $this->setCustomOption(self::OPTION_RENDER_AS_HTML, $asHtml);
  38. return $this;
  39. }
  40. }