Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony][Symfony3][S3] FOSUserBundle
Forum PHP.pl > Forum > PHP > Frameworki
umatik
W zasadzie mój problem opisuje temat. Jak mam dodać skutecznie dodatkowe pola w formularzu rejestracji
FOSUserBundle opisujące dodatkowe role np:

inputy standarowe:
- username
- email
- pass
- pass2

dodatkowe checkbox'y lub radio:
- role-wizard
- role-knight
- role-alien
umatik
hmmm problem do którego opisu prowadzi link jest związany z: fosuserbundle 1.3 -- symfony 2.6.11,
a ja szukam pomocy z wersją FOSUser 2.0 -- S3.3

Chodzi mi o dodatkowe Role, jakie użytkownik może mieć po zalogowaniu.
Pilsener
No to co za problem wyrzucić FOSUser i zrobić po swojemu? Nie ma sensu dociągać do aplikacji szczególnej implementencji userów tylko po to, żeby zaraz ją nadpisywać i modyfikować. I z tego co widzę jest to powszechny problem - zanim się czegoś użyje, trzeba zadać sobie pytanie, czy to jest dokładnie to czego teraz potrzebujemy oraz czy może zaistnieć potrzeba modyfikacji tego w przyszłości.
Zrobienie własnych userów wraz z rolami, logowaniem, rejestracją itp. to jest około jednego dnia pracy a do tego oszczędzasz sobie w przyszłości mase straconego czasu na grzebanie w vendorze i pisanie workaroundów.
umatik
FOSUserBundle w wersji wersji 2.0 obsługuje role, dlatego się chciałem dowiedzieć czy i jak mogę uwzględnić to w formularzu rejestracyjnym.
Pilsener
Role obsługuje Symfony i są one integralną częścią frameworka: http://api.symfony.com/3.4/Symfony/Compone...rInterface.html
Mając własną implementację wystarczyłoby dodać wybór roli do formularza rejestracji. Tutaj jednak najpierw trzeba rozkiminić FOSUser:
https://symfony.com/doc/master/bundles/FOSU...rage_layer.html
Najbardziej podoba mi się to:
Cytat
Configuring FOSUserBundle to use your implementation

- czyli i tak robię własną implementację a ponieważ "używam" FOSUser to go jakoś rozkopię na boki nadpisując:
- encje
- formularze i walidację
- konfigurację
- user provider, success login handler etc.
- pewnie jeszcze jeszcze jakieś eventy i stado templatów
Ma to sens? W ten sposób robi się tylko bajzel w projekcie, za kilka miesięcy nikt nie będzie mógł obczaić relacji pomiędzy Symfony, FOSUser a Twoją implementacją.
Jeśli koniecznie chcemy się wzrorować na FOSUeer to już lepiej go sforkować i zmienić po swojemu.
Pyton_000
To ja dodam do tego co @Pilsener napisał https://jolicode.com/blog/do-not-use-fosuserbundle
umatik
@Pilsener
Tak myślałem, że trzeba 'zcustomizować' FOSUser'a. Dzięki za wskazówki smile.gif

@Pyton_000

Dzięki za linka poczytam smile.gif
kusiu
Cytat(umatik @ 7.12.2017, 10:03:55 ) *
W zasadzie mój problem opisuje temat. Jak mam dodać skutecznie dodatkowe pola w formularzu rejestracji
FOSUserBundle opisujące dodatkowe role np:

inputy standarowe:
- username
- email
- pass
- pass2

dodatkowe checkbox'y lub radio:
- role-wizard
- role-knight
- role-alien


User.php
  1. ...
  2. const ROLE_WIZARD = 'ROLE_WIZARD';
  3. const ROLE_KNIGHT = 'ROLE_KNIGHT';
  4. const ROLE_ALIEN = 'ROLE_ALIEN';
  5.  
  6. const ROLE_TO_DISPLAY = [
  7. self::ROLE_WIZARD => 'Wizard',
  8. self::ROLE_KNIGHT => 'Knight',
  9. self::ROLE_ALIEN => 'Alien',
  10. ];
  11.  
  12. public function getRole(): string
  13. {
  14. $roles = $this->getRoles();
  15. return current($roles);
  16. }
  17.  
  18. public function setRole(?string $role): self
  19. {
  20. return $this->setRoles([$role]);
  21. }


RegistrationFormType.php
  1. ...
  2. $builder->add('role', ChoiceType::class, [
  3. 'choices' => array_flip(User::ROLE_TO_DISPLAY),
  4. 'multiple' => false,
  5. 'expanded' => true,
  6. ]);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.