Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]własna klasa template
Forum PHP.pl > Forum > PHP > Frameworki
areli
czy ktoś może mi coś podpowiedzieć?

Dotychczas robiąc różne stronki korzystałem z własnej klasy template, która była odpowiedzialna za wygląd? od kilku dni bawię się w kohana i chciałem sobie to zaimplementować, ale nie za bardzo mi to idzie

Chce stworzyć
  • kontroler,
  • klase template która będzie sterowała wyglądem,
  • pliki php które będą dziedziczyły z template i w których będzie można nadpisywać metody, oraz
  • pliki w katalogu view?
jak to ogarnąć? ;/


stworzyłem sobie kontroler w którym nie bardzo wiem co wpisać żeby mi ten template działał?

  1. <?php defined('SYSPATH') OR die('No direct access allowed.');
  2. class Costam_Controller extends Controller
  3. {
  4. function index()
  5. {
  6. //(...)
  7. }
  8. }


template wygląda tak

  1. <?php
  2. class Template
  3. {
  4. $dane = array
  5. (
  6. //(...)
  7. );
  8. $dane = array
  9. (
  10. //(...)
  11. );
  12. function showPage()
  13. {
  14. $this->showHeader();
  15. $this->showMenu();
  16. $this->showContent();
  17. $this->showFoot(); }
  18.  
  19.  
  20. function showHeader()
  21. {
  22. $this->showDTD();
  23. $this->showHTML();
  24. $this->dane['page'] .= "<head>\n";
  25. $this->showEncoding();
  26. $this->showLanguage();
  27. $this->showTitle();
  28. $this->showStyle();
  29. $this->dane['page'] .= "</head>\n<body>\n";
  30. }
  31.  
  32. function showMenu()
  33. {
  34. $this->showLeftMenu()
  35. }
  36.  
  37. //(...)
  38.  
  39. }
  40. ?>
  41.  


a plik główny, powiedzmy pageGeneral.php dotychczas wyglądał tak


  1. <?php
  2. class General extends Template
  3. {
  4. public function ShowContent()
  5. {
  6. //(…)
  7. }
  8. }
  9.  
  10. $general = new General();
  11. $general -> Show();
  12. ?>


teraz trzeba wykombinować coś innego, ale nie bardzo wiem co i jak
phpion
Cytat(areli @ 4.11.2009, 16:44:20 ) *
teraz trzeba wykombinować coś innego, ale nie bardzo wiem co i jak

Ale kombinujesz... poczytaj o tworzeniu widoków w Kohanej i zainteresuj się klasą Template_Controller (w miejsce Controller).
k_@_m_i_l
Nie rozumiem po co tak kombinować ? Skoro używasz już frameworka to wykorzystuj to co Ci on oferuje. Kohana oferuje całkiem fajny(przynajmniej jak dla mnie) system widoków i nie rozumiem po co tak kombinować i tworzyć nowy system.
Zainteresuj się tym linkiem : http://dev.kohanaphp.com/wiki/kohana2/Kohana101
thek
Można zrobić to na 2 sposoby:
1) Majstrujesz w klasie Template Kohany i później po niej dziedziczysz, ale nie sądzę by to było sensowne, bo możesz coś schrzanić i wtedy będziesz miał problem, a na dodatek taki template przejdzie do wszystkich serwisów jakie potem zechcesz utworzyć.
2) Tworzysz kontroler, który dziedziczy po Template_Controller Kohany i staje się on dla Ciebie bazowym, mieszasz w jego konstruktorze, ustawiasz domyślny widok, po nim dziedziczysz we wszystkich innych kontrolerach, które tego wymagają.

Ostatecznie więc masz:
Template_Controller w katalogu Kohany (domyślny dla wszystkich projektów - zostawiasz w spokoju)
class Main_Controller extends Template_Controller (to Twój domyślny dla serwisu)
class JakiesTam_Controller extends Main_Controller (to będą podstrony w Twoim serwisie)

Zależnie jak zdefiniujesz sobie konstruktor Main_Controller, tak się będziesz musiał w podstronach do niego dopasować. To myślę najbardziej elastyczne podejście do tworzenia serwisu.
areli
dzięki za odp. może i masz rację z tym kombinowaniem winksmiley.jpg

chciałem użyć przykładu tego ze stronki kohana dział template controller, ale nie wiem dlaczego wyrzuca mi błąd

utworzyłem kontroler home.php i test.php

wrzuciłem do view base.page.php, test.php i template.php z system/controller

odpaliłem i wyrzuciło mi błąd

Fatal error
: Cannot redeclare class Template_Controller in ... on line 54
thek
Nazewnictwo w Kohanie zmusza do pewnych "przyzwyczajeń" winksmiley.jpg Skoro template już istnieje to nie możesz go ponownie "napisać" Możesz mu zmienić nazwę pliku i wtedy przełknie całość, ale jednocześnie musisz mu zmienić nazwę klasy na tę samą wewnątrz pliku (jedno z założeń Kohany -> nazwa klasy to także nazwa pliku, czyli plik template.php to class Template_Controller/Model wrzucony do odpowiedniego katalogu w strukturze strony). Takich obostrzeń jest kilka, a z tego co czytałem w Kohanie 3 będzie struktura plików inna niż w dotychczasowej, więc albo się nastawiasz na 2.X i lecisz tak, poznając przy okazji jak to będzie w 3, albo od razu nastawiasz już na wersję 3 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.