Ładowanie akcji oraz widoków
Jako że przepisuje cały kod, którego i tak było nie wiele, postanowiłem dodać nową funkcjonalność, jaką jest ładowanie klilku akcji w jednej. Już tłumacze na przykładdzie. Mamy moduł News i w nim akcje Show. Oprócz tego mamy jeszcze moduł Comments z akcją ShowComments. I teraz w News->Show() wywołujemy Comments->ShowComments()
-
Class News{
-
public function Show()
-
{
-
//Zawartość akcji
-
$this->newModel('Comments', 'ShowComments'); //Tutaj wczytujemy moduł Comments z akcją ShowComments
-
}
-
}
To był przyklad wywołania. Tak więc to jest to o co powinno chodzić w MVC wg mnie. Np. W tak potężnym Symfony nie ma tego zaimplementowanego. I tam aby wywołać np. komentarze do newsów trzeba było wszystko napisać w akcji newsów. A to mi sie nie podoba!
W teori wygląda ładnie, gorzej z zastosowaniem. Męcze się już nad tym już troche i jakoś nie wiem do końca jak to rozwiązać. Zresztą zainteresowanych zapraszam do dyskusji na ten temat na forum PHP.PL
2 Comments so far
Leave a reply
Dla mnie akcja to akcja, a że np. wiadomość zawiera także komentarze.. to dla mnie to jest część akcji wiadomość. Jeśli chce składać stronę z tzw klocków np. 10 najnowszych wiadomości po prawej, potem np. 10 najnowszych wątków na forum, komentarze.. to wg mnie te części to nie są akcje, tylko elementy wywołanej akcji. Jeśli chce to ładnie opakować sobie w klasy to wkładam to do business helper.
Fakt jest taki, że w wielu CMSach jest tak zrobione, że te kostki to są takie moduły, z których składamy stronę.. ale te moduły to są inne moduły, nie te związane z akcjami. Przynajmniej mi się wydaje, że nie powinno się tego łączyć bo wychodzi, że akcja zawiera w sobie akcje. Nie jestem do tego przekonany.
Hmmm... te komentarze to jest taki szczególny typ akcji, coś w stylu "podakcja", gdyż część z nich działa samodzielnie (dodawanie, usuwanie), a częśc z nich jest wywoływana wraz z innym modułem (lista komentarzy). A helper w moim rozumowaniu jest to taki minimodul. Albo inaczej. To taki minimoduł lub pośrednik między duzymi modułami.