Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Admin Generator] Strony elementów, rozwinięta hierarchia
aze
post 4.11.2010, 14:45:59
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.05.2009

Ostrzeżenie: (0%)
-----


Witam

Mam problem z trochę niestandardową rozbudową panelu admina w Symfony.

Baza w skrócie wygląda tak:

Oferta:
- id
- nazwa

Turnus:
- id
- id_oferty
- termin

Dojazd:
- id
- id_turnusu

W SF bez problemu można zrobić strony do edycji każdego z tych elementów oddzielnie, jednak próbuję zrobić to trochę inaczej. Na stronie z (np.) lista ofert dodać w generator.yml -> list -> object_actions funkcje 'Turnusy' i teraz czy jest jakiś gotowy mechanizm który uprości wyświetlenie listy turnusów tylko dla danej oferty i później schodząc w dól dla Turnusu listę dojazdów i powrotów czy raczej będzie trzeba z palca wszystko pisać?
Go to the top of the page
+Quote Post
LBO
post 4.11.2010, 14:57:30
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tutaj lub 40 slajd tutaj
Go to the top of the page
+Quote Post
aze
post 5.11.2010, 12:30:50
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.05.2009

Ostrzeżenie: (0%)
-----


W sumie nie myślałem żeby zrobić to przez filtry, ale faktycznie działa bardzo ładnie, a wystarczy dodać kilka linijek kodu:). Przy tym rozwiązaniu jest jednak problem przy dodawaniu nowych terminów. W momencie tworzenia nowego turnusu nie mogę automatycznie ustawić oferty do której ma należeć turnus na aktualnie ustawioną w filtrach, a przy nawet 100 ofertach nie ma opcji żeby wybierać z listy.
Kombinowałem trochę z rozwiązaniem tego na poziomie klasy formularza ale nie podoba mi się ta opcja.
Kolejna opcja jest nadpisanie domyślnej metody _new i to chyba najlepsza opcja.

Która z tych opcji jest najbardziej warta uwagi?
Go to the top of the page
+Quote Post
LBO
post 5.11.2010, 14:21:32
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zależy gdzie chcesz dodawać.
1. Stwórz dodatkową rutę sfDoctrineRoute, zwracającą obiekt Oferta, kierującą do moduły Turnus i akcji np newFromOferta
2. W liście ofert dodaj object_action np. "Dodaj turnus"
3. Nadpisz generowanie linka do tej akcji w OfertaGeneratorHelper, tak żeby wykorzystać rute z pkt. 1
4. Stwórz dodatkową akcję newFromOferta tak żeby przyjmowała obiekt z routy.
  1. public function executeNewFromOferta(sfWebRequest $request)
  2. {
  3. $turnus = new Turnus;
  4. $turnus->setOferta($this->getRoute()->getObject());
  5. $this->form = $this->configuration->getForm($turnus);
  6. $this->tracker = $this->form->getObject();
  7. $this->setTemplate('New');
  8. }

Cytat
W momencie tworzenia nowego turnusu nie mogę automatycznie ustawić oferty do której ma należeć turnus na aktualnie ustawioną w filtrach


Teoretycznie możesz, wartości filtra trzymane są w sesji i możesz się do nich dobrać poprzez sf_usera. W samej akcji jest to jeszcze prostsze, bo masz metodę proxy TurnusActions::getFilters(). Mimo wszystko - to brzydki hack!

Admin Generator ma swoje granice.

edit:

Poprawiłem kod akcji.

Ten post edytował LBO 5.11.2010, 14:25:09
Go to the top of the page
+Quote Post
aze
post 5.11.2010, 16:06:09
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.05.2009

Ostrzeżenie: (0%)
-----


Ale w tym przypadku dodawanie nowego turnusu odbywa się z listy ofert, a nie jak powinno być z listy turnusów. Route nie przechowa mi obiektu przez 2 requesty chyba, że jakoś jawnie przepisze o ile się da?
Jak bardzo złą praktyka było by ustawienie atrybutu z id oferty podczas przechodzenia do listy turnusów z object_actions, i później podczas tworzenia nowego turnusu pobrać ten atrybut i ustawić jako ofertę?
Go to the top of the page
+Quote Post
LBO
post 5.11.2010, 16:51:23
Post #6





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zrób jak uważasz za słuszne, ja tylko zwracam uwagę, że jak byś napisał to sam - od podstaw - to już byś miał gotowe.

AG ma to do siebie, że dosyć często trzeba go hackować.

P.S. To jest brzydki hack, ae najważniejsze, że można napisać go "bezpiecznie".
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 20:23