M4ver7071
2.03.2015, 23:20:10
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
2.03.2015, 23:53:51
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
3.03.2015, 09:39:03
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
3.03.2015, 09:46:42
Podstawowe pytanie: czy masz ustawione kaskadowe zapisywanie relacji User<->Role? Dokumentacja:
http://doctrine-orm.readthedocs.org/en/lat...cade-operations
M4ver7071
3.03.2015, 09:59:04
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
3.03.2015, 10:22:16
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:
4. Pokaż kod jakim próbujesz zapisać użytkownika do bazy.
M4ver7071
3.03.2015, 10:37:28
Crozin
3.03.2015, 10:55:54
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
3.03.2015, 10:59:58
Trochę zawiłe bo jak nie usunę tego pola w widoku to wszystko automatycznie się dodaje. Ale już poradziłem

dzięki !
Crozin
3.03.2015, 11:26:45
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.