![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Witam,
korzystając z frameworka Kohana brakowało mi możliwości stosowania komponentów (często wykorzystywałem je przy pracy z Symfony). W związku z tym jakiś czas temu napisałem sobie rozszerzenie, które (moim zdaniem) nieźle spełnia funkcję komponentów w Kohana. application/helpers/symfony.php
application/libraries/Component.php
Aby dodać komponent do widoku (w moim przypadku jest to application/views/template.php) należy: application/components/user.php
application/views/user/test_component.php
application/views/template.php Bardziej życiowy przykład zastosowania: wyświetlanie panelu użytkownika. Jeżeli użytkownik nie jest zalogowany to wyświetlany jest formularz logowania, natomiast jeśli jest już zalogowany to wyświetlane jest info powitalne i link do wylogowania. application/components/user.php
application/views/user/panel_component.php
Wczytanie komponentu w application/views/template.php:
Prosiłbym o opinie oraz ewentualne uwagi czy sugestie. pion |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Mógłbyś ogólnie przybliżyć, w czym mają pomagać i generalnie do czego mają służyć te komponenty? Wyświetlanie formularza lub informacji można spokojnie zrealizować we frameworku bez użycia żadnych komponentów. Nie korzystałem dotychczas z Symfony, dlatego nie jestem w tym zorientowany i chciałbym się dowiedzieć, dlaczego uważasz takie rozwiązanie za dobre.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Bo wczytyjesz modul gdzie i kiedy chcesz a on reszte robi za ciebie
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Mógłbyś ogólnie przybliżyć, w czym mają pomagać i generalnie do czego mają służyć te komponenty? Jest tak, jak pisze ~marcio: Bo wczytyjesz modul gdzie i kiedy chcesz a on reszte robi za ciebie Przykład z panelem użytkownika może nie był najlepszy. Pomyśl sobie jednak, że masz np. sklep internetowy i na każdej podstronie chcesz wyświetlać menu kategorii (pobierane z bazy danych). Możesz oczywiście pisać odpowiednie metody do kontrolera nadrzędnego (i tak to jest realizowane w Kohana), które zrobią to za Ciebie. Jednak w momencie gdy takowych elementów będziesz miał więcej (np. box zawierający produkty w promocji, polecane czy też najchętniej kupowane) dodawanie nowych metod do kontrolera będzie upierdliwe. Poza tym: nie możesz takiego elementu wykorzystać w innym miejscu (np. pod listą produktów z danej kategorii). Skorzystanie z komponentu ogranicza się to wpisu symfony::include_component() w miejscu, w którym mają zostać wyświetlone dane. Więcej informacji o komponentach znajdziesz tutaj: http://www.symfony-project.org/book/1_2/07...ayer#Components |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Np u mnie tak wyglada ladowanie wszystkich modulow dla danej podstrony we wlasciwe miejsce (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) oczywiscie mozna tez ladowac moduly gdy wystapi jakis $_GET za pomoca metody load_modules($module); ktora prawie niczym sie nie rozni od add_modules() oprocz tego ze zwraca zmienne z glownym kodem moduly. Ogolnie moze i przyklad z modulem panela uzytkownika nie jest w pelni zrozumialy bo jak sam chcialem zrozumiec jak uzywac moduly kumpel tez mi zrobil taki przyklad i nic nie zrozumialem, jednak wedlug mnie ja moglbym to tak wytlumaczyc: Zalozmy ze masz strone index.php(Strona glowna) ktora jest napisania za pomoca div'ow a do kazdego div'a mozesz zaladowac poszczegolny modul i wtedy na stronie kontrolujesz jakie maja byc moduly i gdzie one maja byc, oczywiscie dajac tez mozliwosc ladowania kilka modulow do tego samego div'a. Ogolnie kod @phpion jest fajny (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) tylko ze ja nie uzywam Kohana ani OOP dlatego tez napisalem wlasne metody (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@marcio:
Za bardzo nie czaję w jakim celu wkleiłeś swój kod. Przyznam również, że nie do końca mogę się połapać o co Ci chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Swoją drogą: moduł != komponent |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Ja na komponent mowie modul zreszta to chyba synonimy w pewnym sensie przynajmniej dla mnie w zyciu codziennym, a kod podalem zeby @Speedy mogl bardziej zrozumiec po co je uzywac
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Koncepcja partiali jest chyba znana programistom Kohanej. Komponent to partial z wydzieloną logiką.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za linki. Rzeczywiście, poczytałem i jest to fajna sprawa. Mogę sobie wykorzystać Twój kod w Kohanie? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Mogę sobie wykorzystać Twój kod w Kohanie? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Oczywiście, nie ma problemu. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 128 Dołączył: 17.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Nie jest to przypadkiem to samo/podobne podejście co hmvc in kohana tylko tam wykorzystuje się poprostu kontrolery? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
kosmiczne pre-3.0 własnie opiera się na HMVC.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.09.2025 - 10:45 |