您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

89 行
3.4KB

  1. <?php
  2. namespace Lc\PietroBundle\Definition\Field\IndividualData;
  3. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  4. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  5. use EasyCorp\Bundle\EasyAdminBundle\Field\HiddenField;
  6. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  7. use Lc\PietroBundle\Controller\IndividualData\IndividualDataAdminController;
  8. use Lc\PietroBundle\Form\Dream\DreamType;
  9. use Lc\PietroBundle\Form\ProjectBoost\ProjectBoostType;
  10. use Lc\PietroBundle\Form\ProjectInspiring\ProjectInspiringType;
  11. use Lc\PietroBundle\Form\Revolt\RevoltType;
  12. use Lc\SovBundle\Definition\Field\AbstractFieldDefinition;
  13. use Lc\SovBundle\Field\CollectionField;
  14. use Lc\SovBundle\Field\StatusField;
  15. use Lc\SovBundle\Translation\TranslatorAdmin;
  16. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  17. class IndividualDataFieldDefinition extends AbstractFieldDefinition
  18. {
  19. protected AuthorizationCheckerInterface $authorizationChecker;
  20. public function __construct(TranslatorAdmin $translatorAdmin, AuthorizationCheckerInterface $authorizationChecker)
  21. {
  22. $this->authorizationChecker = $authorizationChecker;
  23. parent::__construct($translatorAdmin);
  24. }
  25. public function configureFieldsIndex(): array
  26. {
  27. return [
  28. 'firstname',
  29. 'lastname',
  30. 'territory',
  31. 'nbDream',
  32. 'nbRevolt',
  33. 'nbProjectBoost',
  34. 'nbProjectInspiring',
  35. ];
  36. }
  37. public function configureFields(): array
  38. {
  39. $fields = array();
  40. $fields['firstname'] = TextField::new('firstname');
  41. $fields['lastname'] = TextField::new('lastname');
  42. $fields['email'] = EmailField::new('email');
  43. $fields['territory'] = AssociationField::new('territory');
  44. $fields['nbDream'] = TextField::new('nbDream');
  45. $fields['nbRevolt'] = TextField::new('nbRevolt');
  46. $fields['nbProjectBoost'] = TextField::new('nbProjectBoost');
  47. $fields['nbProjectInspiring'] = TextField::new('nbProjectInspiring');
  48. $fields['revolt'] = CollectionField::new('revolt')
  49. ->setFormTypeOption('entry_type', RevoltType::class)
  50. ->setFormTypeOption('by_reference', false)
  51. ->setRequired(false);
  52. $fields['dream'] = CollectionField::new('dream')
  53. ->setFormTypeOption('entry_type', DreamType::class)
  54. ->setFormTypeOption('by_reference', false)
  55. ->setRequired(false);
  56. $fields['projectBoost'] = CollectionField::new('projectBoost')
  57. ->setFormTypeOption('entry_type', ProjectBoostType::class)
  58. ->setFormTypeOption('by_reference', false)
  59. ->setRequired(false);
  60. $fields['projectInspiring'] = CollectionField::new('projectinspiring')
  61. ->setFormTypeOption('entry_type', ProjectInspiringType::class)
  62. ->setFormTypeOption('by_reference', false)
  63. ->setRequired(false);
  64. $hasAccess = $this->authorizationChecker->isGranted('ROLE_ADMIN');
  65. if ($hasAccess) {
  66. $fields['status'] = StatusField::new('status')
  67. ->setFormTypeOption('data', 0)
  68. ->setFormTypeOption('choices', ['Validé' => 1, 'En attente' => 0])
  69. ->setCustomOption('toggle_label', 'Valider');
  70. } else {
  71. $fields['status'] = HiddenField::new('status')
  72. ->setFormTypeOption('data', 0);
  73. }
  74. return $fields;
  75. }
  76. }