Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

143 Zeilen
5.4KB

  1. <?php
  2. namespace Lc\SovBundle\Form\Common;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Doctrine\ORM\EntityRepository;
  5. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  6. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Field\FieldInterface;
  7. use Lc\SovBundle\Field\Filter\AssociationFilter;
  8. use Lc\SovBundle\Field\Filter\CheckboxFilter;
  9. use Lc\SovBundle\Field\Filter\ChoiceFilter;
  10. use Lc\SovBundle\Field\Filter\DateFilter;
  11. use Lc\SovBundle\Field\Filter\FilterManager;
  12. use Lc\SovBundle\Field\Filter\IntegerFilter;
  13. use Lc\SovBundle\Field\Filter\TextFilter;
  14. use Lc\SovBundle\Translation\TranslatorAdmin;
  15. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  16. use Symfony\Component\Form\AbstractType;
  17. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  18. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  19. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  20. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  21. use Symfony\Component\Form\Extension\Core\Type\DateType;
  22. use Symfony\Component\Form\Extension\Core\Type\FormType;
  23. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  24. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  25. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  26. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  27. use Symfony\Component\Form\Extension\Core\Type\TextType;
  28. use Symfony\Component\Form\FormBuilderInterface;
  29. use Symfony\Component\OptionsResolver\OptionsResolver;
  30. use Symfony\Contracts\Translation\TranslatorInterface;
  31. use function Symfony\Component\String\u;
  32. class FiltersFormType extends AbstractType
  33. {
  34. protected $translatorAdmin;
  35. public function __construct(TranslatorAdmin $translatorAdmin)
  36. {
  37. $this->translatorAdmin = $translatorAdmin;
  38. }
  39. public function buildForm(FormBuilderInterface $builder, array $options)
  40. {
  41. foreach ($options['fields'] as $field) {
  42. if ($field instanceof FieldInterface) {
  43. $fieldDto = $field->getAsDto();
  44. } else {
  45. $fieldDto = $field;
  46. }
  47. if ($fieldDto->isDisplayedOn(Crud::PAGE_INDEX)) {
  48. dump($fieldDto);
  49. switch ($fieldDto->getFormType()) {
  50. case CheckboxType::class:
  51. $checkboxFilter = new CheckboxFilter();
  52. $checkboxFilter->buildProperty($builder, $fieldDto);
  53. break;
  54. case ChoiceType::class:
  55. $choiceFilter = new ChoiceFilter($this->translatorAdmin);
  56. $choiceFilter->buildProperty($builder, $fieldDto, $options);
  57. break;
  58. case IntegerType::class:
  59. $integerFilter = new IntegerFilter();
  60. $integerFilter->buildProperty($builder, $fieldDto);
  61. break;
  62. case TextType::class:
  63. case TextareaType::class:
  64. $textFilter = new TextFilter();
  65. $textFilter->buildProperty($builder, $fieldDto);
  66. break;
  67. case DateTimeType::class:
  68. case DateType::class:
  69. $textFilter = new DateFilter();
  70. $textFilter->buildProperty($builder, $fieldDto);
  71. break;
  72. case EntityType::class:
  73. //$associationFilter = new AssociationFilter();
  74. //$associationFilter->buildProperty($builder, $fieldDto, $options);
  75. break;
  76. case 'dateinterval':
  77. break;
  78. case 'float':
  79. break;
  80. }
  81. }
  82. }
  83. $builder->add(
  84. 'action_apply',
  85. SubmitType::class,
  86. array(
  87. 'label_html' => true,
  88. 'label' => '<i class="fa fa-search"></i>',
  89. 'attr' => array(
  90. 'class' => 'btn btn-sm btn-info',
  91. 'form' => 'filters-form',
  92. 'data-toggle' => "tooltip",
  93. 'title' => $this->translatorAdmin->transAction("apply"),
  94. 'aria-label' => $this->translatorAdmin->transAction("apply")
  95. ),
  96. )
  97. );
  98. $builder->add(
  99. 'action_reset',
  100. SubmitType::class,
  101. array(
  102. 'label_html' => true,
  103. 'label' => '<i class="fa fa-eraser"></i>',
  104. 'attr' => array(
  105. 'class' => 'btn btn-sm btn-warning lc-reset-filters',
  106. 'form' => 'filters-form',
  107. 'data-toggle' => "tooltip",
  108. 'title' => $this->translatorAdmin->transAction("reset"),
  109. 'aria-label' => $this->translatorAdmin->transAction("reset")
  110. ),
  111. )
  112. );
  113. $builder->add('reset', HiddenType::class);
  114. }
  115. public function configureOptions(OptionsResolver $resolver)
  116. {
  117. $resolver->setDefaults(
  118. [
  119. 'label' => false,
  120. 'csrf_protection' => false,
  121. 'entity_dto' => null,
  122. //'translation_domain' => 'lcshop',
  123. 'fields' => false,
  124. 'entity_name' => false,
  125. 'entity_class' => false,
  126. //'entityClass' => false
  127. ]
  128. );
  129. }
  130. }