Witam

Korzystam z sfDoctrineGuardPlugin, wprowadziłem dodatkowe 2 tabele które rozszerzają informacje o użytkowniku w zależności od jego typu (dane zapisywane są tylko w jeden z dodatkowych tabel).

sfGuardUser 1:1 Camper
sfGuardUser 1:1 Agent

Mam problem przy tworzeniu nowego użytkownika. Próbowałem połączyć formularze (przez $this->mergeForm()) jednak musiało by to być w formularzu podrzędnym czyli CamperForm i AgentForm ale pojawiały się problemy przy zapisywaniu formularza, generalnie się nie dziwie bo zapewne próbował zapisać Camper przed zapisaniem Usera co dawało błąd kluczy. Teraz próbuje po prostu używać oddzielnie 2 formularzy. Wiem, że to nie jest pełne wykorzystanie możliwości Symfony ale dopiero się uczę.

Przekazuje obydwa formularze do processForm():
  1. protected function processForm(sfWebRequest $request, sfForm $userForm, sfForm $camperForm) {
  2. $userForm->bind(
  3. $request->getParameter($userForm->getName())
  4. );
  5. $camperForm->bind(
  6. $request->getParameter($camperForm->getName())
  7. );
  8.  
  9.  
  10. if ($userForm->isValid() && $camperForm->isValid()) {
  11. $user = $userForm->save();
  12. // tutaj zapewne trzeba powiedzieć symfony ze $camperForm zawiera klucz obcy do sfGuardUser ale nie bardzo wiem ja to zrobić, a necie też nie za wiele przypadków do przestudiowania znalazłem
  13. $camper = $camperForm->save();
  14.  
  15. $this->redirect('/', $camper); // to tylko przykład
  16. }
  17. }


Ktoś spotkał się z podobnym przypadkiem i może jakiś pomysł podrzucić lub linki które warto przeczytać?

Problem rozwiązany.

Jednak działa normalny $this->mergeForm(); nawet z formularza rozszerzającego, ja chciałem za bardzo przekombinować z formularzami w processForm.