CodeIgniter - MVC - Pytania Teoretyczne

0

Witam. Na wstępie napiszę, że o frameworkach wiem nie wiele, a CI wybrałem, ponieważ jako jedyny bez problemu zadziałał na darmowym hostingu. Dla mnie to sprawa hobbystyczna – chcę jedynie przepisać moją stronę domową.

  1. Jak rozdzielić pod-strony między kontrolery?
    a) według tematu – każda pod-strona to inny kontroler, i osobno kontroler admin do edycji wszystkich elementów strony?
    b) według Modelu – newsy wraz z edycją to jeden kontroler, drugi zajmuje się np. księgą gości, a trzeci pod-stronami statycznymi?
    c) może wszystko wstawić w jeden kontroler i operować na parametrach w adresie?

  2. Wszystkie serwisy mają sporą część kodu HTML, która się nie zmienia. Czy w każdej metodzie, każdego kontrolera muszę za każdym razem wczytywać Widok zawierający główny szablon serwisu?

  3. Jeśli serwis posiada Menu widoczne na każdej pod-stronie, ale generowane dynamicznie przez PHP to gdzie w modelu MVC ma się ten kod znajdować. Czy można dać go do pliku z Widokiem głównego szablonu, czy dać to do konstruktorów wszystkich kontrolerów?

  4. Słyszałem, że razem z frameworkiem można używać Smarty, w którym miejscu dokładnie tzn. czy w takiej sytuacji rezygnuje się zupełnie z Widoku i zamiast niego daje się $smarty->display() czy jakoś inaczej?

0

Ad 1: Ja dzielę według "tematu" - jeden na oglądanie newsów, inny na oglądanie/szukanie itp. księgi gości, administracyjny na operacje usuwania/dodawania/banowania itp.

Ad 3: Stwórz sobie helper, który będzie generował, ewentualnie możesz to zrobić w konstruktorze klasy Controller, żeby nie musieć w każdym kontrolerze wpisywać.

Ad 4: Rezygnuje się zupełnie z widoku, używa zamiast tego $this->cismarty->display(). A przynajmniej ja takiej klasy używałem.

Klasa wygląda tak: http://www.ktos.info/download/CISmarty.phps

A jej użycie w jakimś kontrolerze na przykład tak:

$this->cismarty->assign('newest', $newest);
$this->cismarty->assign('countries', $countries);
$this->cismarty->assign('sorts', $sorts);
$this->cismarty->display('welcome.tpl');

Oczywiście klasa (biblioteka) CISmarty była w autoloadzie.

0

Dzięki bardzo za odpowiedzi.
Mam jeszcze takie pytanie. Do czego właściwie został wymyślony scaffolding? Czy to jest rozwiązanie dla programistów czy dla klientów/użytkowników? Ma być w takiej formie jak widać czy może należy go przystosować do swojego serwisu jako panel administracyjny?

0

Rozwiązanie tymczasowe, dla programisty. Dla użytkownika końcowego lepiej napisać własny system.

0

Pytanie z ciekawości: Czy jest jakiś framework który radzi sobie z sesjami kiedy użytkownik wyłączy cookies?

1 użytkowników online, w tym zalogowanych: 0, gości: 1