Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> różna ilość kolumn (widok), mvc
nmts
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

Ostrzeżenie: (0%)
-----


Najpierw opiszę to co mam aktualnie. Na bazie Kohany.

W domyślnym kontrolerze dziedziczącym po Controller_Template ustalam domyślną
ilość kolumn:
  1. public $columns = '3columns';


W before() ustalam kolejno odpowiedni widok dla danej liczby kolumn, i przekazuje liczbę kolumn
aby załadować plik stylu dla danej opcji.
  1. $this->template->main = View::factory($this->columns);
  2. $this->template->columns = $this->columns;


I teraz mogę ustalać sobie dla każdego kontrolera inna ilość, przykładowo:
  1. class Controller_About extends Controller_Index {
  2.  
  3. public $columns = '2columns';
  4.  
  5. public function action_index()
  6. {
  7. $this->template->main->content = View::factory('about');
  8. }
  9. }


Oprócz tego jak już wymieniłem są default2columns.css, default3columns.css, i default.css dla tego co jest wspólne, w głównym widoku odpalam <?php echo $main ?>,
który odpala widok 2columns.php(który w rzeczywistości jest jedną kolumną) lub 3columns.php(który w rzeczywistości ma dwie kolumny - trzecia, statyczna kolumna jest na tym samym poziomie co zmienna $main), które z kolei wyświetlają co tam jeszcze chcą.

Jednak w takim rozwiązaniu nie mogę ustalić różnej ilości kolumn dla różnych akcji.

Jakie proponujecie bardziej elastyczniejsze rozwiązanie bardziej lub mniej różniące się od powyższego?

Może po prostu coś takiego, efekt chyba taki sam, choć z palca pisane, trochę więcej kodu w poszczególnych akcjach, ale można bardziej szczegółowo definiować:
  1. class Controller_About extends Controller_Index {
  2.  
  3. public $columns;
  4.  
  5. public function action_index()
  6. {
  7. $this->columns = '2columns';
  8. $this->template->columns = $this->columns;
  9. $this->template->main = View::factory($this->columns);
  10. $this->template->main->content = View::factory('about');
  11. }
  12. }


A może jakoś fajniej można to zrobić?

Próbowałem rozszerzyć klasę View, aby można było zrobić coś w stylu:
  1. $this->template->main = View::factory('about')->set('tekst', 'blabla')->set_columns('2columns');


co dało by efekt taki jak we wcześniejszym listingu, ale nie mogłem sobie z tym poradzić - utworzenie nowej metody to nie problem, ale oprócz tego wypadałoby chyba rozszerzyć render() w taki sposób aby w określonym przypadku widok wrzucała do widoku 2columns/3columns, który z kolei zwracać zmiennej main, plus jakaś zmianna, może set_global do określenia odpowiedniego css. snitch.gif

Ten post edytował nmts 3.08.2010, 19:14:23


--------------------
Free Web Tools - narzędzia dla programistów, webdeveloperów i specjalistów seo...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:31