[Kohana] Problem z przekazywaniem danych z/do kontrolera |
[Kohana] Problem z przekazywaniem danych z/do kontrolera |
23.07.2008, 09:16:18
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Witam,
mam pewien problem. Na stronie chciałbym mieć menu, które będzie pobierane z bazy danych. Chciałbym aby to menu było automatycznie generowane i wstawiane do szablonu. Nie mogę sobie poradzić z pełną automatyzacją tego zadania. MY_Controller.php
oraz przykładowy plik kontrolera:
W template.php wyświetlam menu poprzez:
W takiej formie wszystko działa poprawnie. Chciałbym jednak pozbyć się przypisania $this->template->menu w każdym kontrolerze. Próbowałem na różne sposoby, m.in.:
ale za każdym razem otrzymuję nieznaną zmienną $menu (odpowiedni wpis z samego kontrolera oczywiście usunąłem). Jak rozwiązać ten problem? Reasumując: w głównym szablonie chciałbym wczytać menu, które będzie generowanie dynamicznie na podstawie bazy danych (coś a'la komponent w Symfony). Pozdrawiam, pion |
|
|
23.07.2008, 10:20:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 6 Dołączył: 2.01.2004 Ostrzeżenie: (0%) |
Tworzysz kontroler główny np Main_Controller(ja to nazywam to u siebie) dziedziczący po Template_Controller
przykład:
Później w każdym kontrolerze dziedziczysz po Main np "class News_Controller extends Main_Controller". I masz przekazaną wartość do widoku w każdym kontrolerze. -------------------- |
|
|
23.07.2008, 13:11:17
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
No właśnie nie bardzo, ponieważ $this->template nie jest obiektem tylko zwykłym stringiem. Próbowałem również zrobić coś takiego (w MY_Controller):
ale wtedy tracą się wszystkie zmienne, które są przypisywane do szablonu (w skrócie: nie działa ). |
|
|
23.07.2008, 13:42:52
Post
#4
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 6 Dołączył: 2.01.2004 Ostrzeżenie: (0%) |
Jeszcze raz, bo u siebie to wykorzystuje i nie ma najmniejszego problemu.
Main Controller
Kawałek Kontroler Nowości:
i widoku główny ustawiony wyświetlam 2 zmienne - $menu i $content, i tyle W tym przepadku mamy news i menu na jednej stronie. W kontrolerach już nie nadpisuje $this->template. -------------------- |
|
|
23.07.2008, 14:54:00
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Bingo! Działa! Jest jeszcze jeden problem. Całość zrobiłem tak:
no a dalej to już nic magicznego. Jednak zawsze najpierw następuje próba wczytania szablonu template.php z katalogu views (wywołanie w Template_Controller). Niby to żaden problem: po prostu utworzyłem pusty plik views/template.php i jest on wczytywany, a później ładowany jest właściwy szablon (Config::item('shop.views').'/template'). Nie mam za bardzo koncepcji jak to elegancko zrobić... W sumie mógłbym przekopiować kod z Template_Controller i wrzucić go do Main_Controller_Core dziedzicząc równocześnie po samym Controller. Ale czy byłoby jakieś inne (lepsze) rozwiązanie? |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 15:20 |