Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][SF][SF2] Rejestracja użytkownika - domyślna rola
Forum PHP.pl > Forum > PHP > Frameworki
M4ver7071
Witam,



Posiadam CRUD do tworzenia użytkownika, domyślnie jak chce stworzyć nowego użytkownika to mam możliwość wyboru dla niego roli. Problem polega na tym, że chce aby domyślnie dla użytkownika była dodawana rola. W standardzie jest to : role, tabela user oraz tabela user_role. W tabeli user_role jest ID użytkownika i ID roli.
Wszystko ładnie tylko że jak usunę pola do wyboru danej roli i ustawie to na sztywno, to nie dodaje mi się do tabeli user_role ani id użytkownika ani id_roli.
W kodzie nic nie zmieniłem tylko zamiast select'a do wyboru roli zrobiłem hidden z ustawioną wartością. Jak to poprawić by działało prawidłowo, jakieś sugestie??
blahy
FosUserBundle uzywasz czy sam cos napisales?
Mozesz w konstruktorze encji usera dodac $this->addRole('ROLE_MOJA');
Nie zapomnij wywolac parent::__construct(); jesli jednak uzywasz FosUsera.
M4ver7071
Nie używam FOSUserBundle. Zrobiłem encje User i Role, dałem do nich relacje i potem to wszystko połączyłem poprzez doctrine:generate:entities Acme/AcmeBundle/Entity/User itd.
Crozin
Podstawowe pytanie: czy masz ustawione kaskadowe zapisywanie relacji User<->Role? Dokumentacja: http://doctrine-orm.readthedocs.org/en/lat...cade-operations
M4ver7071
Po wygenerowaniu CRUD do encji User, w widoku dodania nowego użytkownika jest do wyboru kilka rol i jak ją wybiorę to wszystko ładnie się zapisuje. Jednak ja nie chce aby użytkownik mógł sobie sam wybrać uprawnienia więc chciałem na sztywno jest ustawić i tutaj jest problem. Bo w builderForm miałem add('roles') a teraz zmieniłem na add('roles', 'hidden,' array('data'=>'2', 'mapped' => true)) ale wtedy nie przypisuje roli dla użytkownika
Crozin
To już wiemy, nie wiemy natomiast czy masz dobrze skonfigurowanego Doctrine'a.

1. Pokaż kod swoich encji.
2. Pokaż ich konfigurację jeżeli jest zapisana w formie XML/YAML/PHP, a nie adnotacji.
3. Pokaż jaki obiekt masz w pamięci przed zapisem:
  1. var_dump($user)

4. Pokaż kod jakim próbujesz zapisać użytkownika do bazy.
M4ver7071
O to kod metody
http://pastebin.com/gp2nMWCD

O to kod encji User:
http://pastebin.com/615JzkBD

O to kod encji Role:
http://pastebin.com/4sxgkE8u


var_dump($user)
http://pastebin.com/DdfFg1rg

Crozin
Przy takiej architekturze powinieneś:
1. Wcześniej wypełnić tabelę z rolami odpowiednimi wartościami (jednorazowa operacja).
2. Przed utworzeniem użytkownika wybrać z BD odpowiednie role.
3. Przy utworzeniu użytkownika dodać mu obiekty typu Role, a nie stringi reprezentujące nazwy roli.
4. Powinieneś mieć skonfigurowane kaskadowe dodawanie/usuwanie obiektów dla User::roles.
M4ver7071
Trochę zawiłe bo jak nie usunę tego pola w widoku to wszystko automatycznie się dodaje. Ale już poradziłem smile.gif dzięki !
Crozin
Jak co usuniesz co Ci się automatycznie dodaje? Bo nic nie ma prawa samo z siebie się dodać.
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.