Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Relacja obiektu z samym sobą w generatorze admina
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
Witajcie. Załóżmy, że chcemy wyświetlać pod publikacjami listę powiązanych z nią publikacji. Chciałbym zrobić relację wiele do wielu obiektu publikacja z samym sobą i mój yml wyglądałby tak:

Kod
publikacja_publikacja:
  publikacja_id:      { type: integer, foreignTable: publikacja, foreignReference: id, required: true, primaryKey: true, onDelete: cascade }
  publikacja_id:      { type: integer, foreignTable: publikacja, foreignReference: id, required: true, primaryKey: true, onDelete: cascade }


Generuję ten relacyjny moduł w adminie i gdy dodaję widget publikacja_publikacja_list w pliku konfiguracyjnym modułu generator.yml, otrzymuję informację, że taki widget nie istnieje:

"Widget "publikacja_publikacja_list" does not exist."

Jeżeli tego się nie da zrobić to w jaki sposób wy rozwiązalibyście podpinanie obiektów pod ten sam typ obiektów tak, żeby można to było wygodnie zrobić w wygenerowanym panelu administracyjnym Symfony?

Pozdrawiam


EDIT:
Teraz przyszło mi do głowy, że to głupie co chcę zrobić bo przecież 2 pola w tabeli mysql nie mogą się tak samo nazywać... Hm chyba więc wystarczy zmienić nazwę pola, nie wiem dlaczego o tym nie pomyślałem :/

EDIT:
Ale i tak nie mogę sobie poradzić:
Kod
publikacja_publikacja:
  pierwsza:      { type: integer, foreignTable: publikacja, foreignReference: id, required: true, primaryKey: true, onDelete: cascade }
  druga:         { type: integer, foreignTable: publikacja, foreignReference: id, required: true, primaryKey: true, onDelete: cascade }


I przy użyciu publikacja_publikacja_list dostaję ten sam komunikat o tym, że widget ten nie istnieje. Moduł w adminie generuje się prawidłowo... Czy ktoś ma pomysł gdzie leży mój błąd albo jakie rozwiązanie mogę zastosować żeby uzyskać opisany efekt?
Gribo
no jak dostajesz taki komunikat "Widget "publikacja_publikacja_list" does not exist." to zapewne ten widget ma inną nazwę podejrzyj klasę publikacjaPublikacjaBaseForm jakie widgety są użyte. Jeśli w backendzie formularz się generuje to w frontend tez musi.
Foxx
Klasa BasePublikacjaPublikacjaForm nie różni się niczym od klasy np. BasePublikacjaSeriaForm, która też jest relacją wiele do wielu publikacji i serii. A gdzie w ogóle można znaleźć te widgety publikacja_publikacja_list czy też publikacja_seria_list? W tych klasach, które wskazałeś ich nie ma. Zawartość pliku wygląda tak:
  1. abstract class BasePublikacjaPublikacjaForm extends BaseFormPropel
  2. {
  3. public function setup()
  4. {
  5. $this->setWidgets(array(
  6. 'pierwsza' => new sfWidgetFormInputHidden(),
  7. 'druga' => new sfWidgetFormInputHidden(),
  8. ));
  9.  
  10. $this->setValidators(array(
  11. 'pierwsza' => new sfValidatorPropelChoice(array('model' => 'Publikacja', 'column' => 'id', 'required' => false)),
  12. 'druga' => new sfValidatorPropelChoice(array('model' => 'Publikacja', 'column' => 'id', 'required' => false)),
  13. ));
  14.  
  15. $this->widgetSchema->setNameFormat('publikacja_publikacja[%s]');
  16.  
  17. $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
  18.  
  19. parent::setup();
  20. }
  21.  
  22. public function getModelName()
  23. {
  24. return 'PublikacjaPublikacja';
  25. }
  26.  
  27.  
  28. }


EDIT

Widzę, że w klasach BasePublikacjaFormFilter.class.php, BasePublikacjaForm.class.php i Base dla modelu nie ma po prostu tych fragmentów kodu dla publikacja_publikacja_list podczas gdy dla publikacja_seria_list wszystko się wygenerowało prawidłowo. Nie wiem dlaczego nie chce się taka relacja wygenerować sad.gif Ma ktoś jakąś radę dla mnie?
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.