![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ciężko zdefiniować ten problem, bo jest dość zakręcony. Postaram się przedstawić w miarę jasno o co chodzi. Zacznę od listingu.
Plik obcięty ze zbędnych tagów. Przedstawia definicję akcji i ich podstawowe relacje. actions.xml
Załóżmy, że wywołujemy żądanie o postaci index.php?action=index Parser czytając ten plik XML odczyta subakcję i stworzy ciąg akcji do uruchomienia w postaci showCategory showNews index W przedstawionej kolejności zostaną te akcje wykonane. (np metodą execute()) Gdzie problem? Ano. np, index.php?action=index&id=3 Intencją programisty jest, że $id odnosi się do akcji showCategory, która na jej podstawie wybiera kategorię z bazy danych. Niech teraz akcja showNews również wymaga przekazania jakichś argumentów, np. $category oraz $id. Nie może po prostu odczytać $id, bo ten jest pobierany przez inną akcję i może nie zawierać tego, co chcemy, a nawet na pewno nie zawiera. Ktoś może powiedzieć, że w takim razie najlepiej stworzyć łańcuch index.php?action=index?categoryId=7&newsId=5 Od razu odpowiem, że takie rozwiązanie jest kalekie, i w ogóle nie wchodzi w grę, bo związuje akcję z konkretną nazwą klucza, którą potem trzeba wszędzie powtarzać. Ktoś inny może podsunąć pomysł ustawiania parametrów żądania przez poprzednią akcję. Owszem. Wiele frameworków robi to i czasami również zaleca uruchomienie, bądź wręcz uruchamia kolejna akcję. Można wówczas taki bajer zrobić W ciele akcji showCatagory
Co jednak, jeśli te akcje mogą zostać uruchomione w różnych kontekstach? np. Stwórzmy nową akcję.
Jak widać, uruchomienie index?action=showMostPopularCategory również wykona akcję showCategory. Niniejszym jakakolwiek ingerencja w parametry akcji showNews nie ma sensu, bo tej akcji nie ma w łańcuchu. Podobnie rzecz się będzie miała z innymi akcjami, a dochodzą jeszcze nieograniczone wręcz możliwości kombinowania układów akcji. Rodzi się konkretne pytanie - w jaki sposób przekazać w takim układzie parametry żądania? Akcja nie ma pojęcia, w jakim kontekście jest uruchamiana, wiec musi liczyć na to, coś ustawi to za nią, albo sama musi znaleźć te parametry... : \ Jeśli ktoś spotkał się z podobnym problemem, to będę wdzięczny za podzielenie się przemyśleniami oraz posiadanymi linkami do artów itp. Dzięki wszystkim, którzy w ogóle dobrnęli do końca tego posta Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 19:03 |