Wiele akcji w jednej akcji - sukces!
W poprzedniej notce pisałem o moich dylematach co do ładowania akcji w akcji. Teraz, po długich bojach doszedłem do tego co chciałem :D Przyklad:
-
<?php
-
class DefaultAction extends View
-
{
-
public function Index()
-
{
-
$this->newModel( 'Show'); //Załaduje nam akcje Show z aktualnego modulu
-
$this->newModel( 'Show', 'News' ); //Załaduje Show z modułu News
-
$this->newModel( 'Index', 'Test'); //Załaduje Index z modułu Test
-
}
-
public function Show()
-
{
-
$this->test = 'zmienna testowa';
-
}
-
}
-
?>
To był przyklad wykorzystania. To jest dokladnie to o co mi chodziło od początku :) Teraz bez problemu moge napisać moduł News oraz moduł Comments, bez zadnych powiązań między nimi. Zaden z modułów nic nie musi wiedzieć o drugim. Do zrobienia jeszcze zostało mi tylko dodanie parametrów, do nowo wywołanej akcji, ale to już nie problem :)
Dodatkowo, aby sie nie pomylić w szablonach ze zmiennymi, zrobiłem małe udogodnienie. Do zmiennych w szablonie odwołujemy sie w taki sposób: echo $NazwaModułu->zmienna Dzięki temu napewno nie nastapi pomyłka, lub nadpisanie jakiejs zmiennej :)
5 Comments so far
Leave a reply
Napisz potem jak to w praktyce wyszło, czy się sprawdziło, gdy skończysz jakiś projekt.
przez jakiś czas głowiłem się z podobnym dylematem, w końcu stworzyłem coś co używa wzorca kompozycji do składania akcji razem + małe udogodnienia, z tym że każda akcja jest tworem całkowicie niezależnym z własnym indywidualnym szablonem. w chwili wolnego czasu muszę to jakoś ładnie udokumentować i udostępnić. mam nadzieję, że ty też pokażesz trochę kodu od podszewki niedługo.
U mnie każda akcja równiez jest samodzielna. Można je wywoływać bespośrednio lub pośrednio wewnątrz innej akcji. Oraz oczywiście każda posiada osobny szablon. Co do udostepnienia kodu... Jeszcze nie wiem. Docelowo pisze to sam dla siebie, aby pózniej wykorzystywać w przyszłych projektach. Ale być może dam do oceny :)
Przecież nie ładujesz module, a model - reprezentację danych. I czemu nazywasz to akcjami? Widoczny brak teorii... Poza tym jeżeli to jest kontroler akcji to dlaczego dziedziczy po klasie widoku? Jakoś całość nie ma sensu.
Nazywać moge jak chce. Jak nie wiesz jak jest zbudowana całość, to nie pisz, ze nie ma sensu. Klasa View dziedziczy po AppController. Już ma sens? Czemu nazywam akcjami? Jak zapoznasz sie ze specyfikacją Symfony, to sie dowiesz dlaczego (link). Takie podzielenie jakie jest zastosowane odpowiada mi w 200%.