src/Form/BugReportForm.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Admin;
  4. use App\Entity\Child;
  5. use App\Entity\Lesson;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  10. use Symfony\Component\Form\Extension\Core\Type\FileType;
  11. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  12. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextType;
  15. use Symfony\Component\Form\FormBuilderInterface;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  18. class BugReportForm extends AbstractType
  19. {
  20. private UrlGeneratorInterface $urlGenerator;
  21. public function __construct(UrlGeneratorInterface $urlGenerator)
  22. {
  23. $this->urlGenerator = $urlGenerator;
  24. // you *must* call the parent constructor
  25. }
  26. public function buildForm(FormBuilderInterface $builder, array $options)
  27. {
  28. // Dynamic form building
  29. $url = $this->urlGenerator->generate('bug_report_form');
  30. $builder
  31. ->setAction($url);
  32. if($options['required'] === true) {
  33. $builder->add('status', ChoiceType::class,[
  34. 'choices' => [
  35. "Naujas"=>"0",
  36. "Vykdomas"=>"1",
  37. "Laukiama PR"=>"4",
  38. "Išspręstas"=>"2",
  39. "Atšauktas"=>"3",
  40. ],
  41. 'label' => 'Statusas'
  42. ]);
  43. }
  44. $builder
  45. ->add('timeInMinutes', IntegerType::class, [
  46. 'label' => 'Time in minutes'
  47. ])
  48. ->add('priority', ChoiceType::class, [
  49. 'choices' => [
  50. "Low"=>"low",
  51. "Medium"=>"medium",
  52. "High"=>"high",
  53. ],
  54. 'label' => 'Proritetas'
  55. ])
  56. ->add('difficultiesFor', ChoiceType::class, [
  57. 'choices' => [
  58. "forms.labels.admin"=>"Admin",
  59. "forms.labels.teacher"=>"Korepetitoriui",
  60. "forms.labels.guardian"=>"Globejui",
  61. "forms.labels.child"=>"Mokiniui",
  62. ],
  63. 'label' => 'Kam tai nutiko?'
  64. ])
  65. ->add('stepsToReproduce', TextareaType::class,[
  66. 'label' => 'Dabartinis veikimas / problema',
  67. 'required' => false,
  68. ])
  69. ->add('message', TextareaType::class,[
  70. 'label' => 'Žingsniai, kaip nutiko problema?',
  71. 'required' => false,
  72. 'attr'=>[
  73. 'class'=>"tinymce"
  74. ],
  75. ]);
  76. if($options['required'] === false) {
  77. $builder->add('currentUrl', HiddenType::class, [
  78. 'required' => false,
  79. 'attr' => [
  80. 'id' => "currentUrl"
  81. ],
  82. ]);
  83. }
  84. if($options['required'] === true) {
  85. $builder->add('currentUrl', TextType::class, [
  86. 'required' => false,
  87. 'attr' => [
  88. 'id' => "currentUrl"
  89. ],
  90. ]);
  91. $builder->add('adminComment', TextareaType::class, [
  92. 'label' => 'Admin komentaras',
  93. 'required' => false,
  94. ]);
  95. $builder->add('assignee', EntityType::class, [
  96. 'class' => Admin::class,
  97. 'query_builder' => fn($repo) => $repo->createQueryBuilder('a')
  98. ->where('a.department = :dept')
  99. ->andWhere('a.active = :active')
  100. ->setParameter('dept', Admin::DEPARTMENT_DEV)
  101. ->setParameter('active', true)
  102. ->orderBy('a.fullname', 'ASC'),
  103. 'choice_label' => 'fullname',
  104. 'label' => 'Atsakingas',
  105. 'required' => false,
  106. 'placeholder' => '- Nepriskirtas -',
  107. ]);
  108. }
  109. if($options['required'] === false) {
  110. $builder->add('status', HiddenType::class,[
  111. 'required' => false,
  112. ]);
  113. }
  114. }
  115. }