Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Prosty Router czy coś w tym stylu
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam,

chciałem dowiedzieć się o rozwiązanie mojego problemu

na chwile obecną tworze np plik do obsługi wyników

  1. if(!isset($_GET["mode"]))
  2. {
  3. //ZMIENNE
  4. $_GET['mode'] = 'undefined';
  5. //ZAPYTANIA
  6.  
  7. //LOGIKA
  8. include_once "view/wyniki/index.tmp.php";
  9. }
  10.  
  11. if($_GET['mode'] == 'add')
  12. {
  13. //ZMIENNE
  14.  
  15. //ZAPYTANIA
  16.  
  17. //LOGIKA
  18. include_once "view/wyniki/add.tmp.php";
  19. }
  20.  
  21. if($_GET['mode'] == 'results' && isset($_GET['id']))
  22. {
  23. //ZMIENNE
  24.  
  25. //ZAPYTANIA
  26.  
  27. //LOGIKA
  28.  
  29. include_once "view/wyniki/results.tmp.php";
  30. }


czy jest możlowość jakoś zastąpienia tego żeby nie wymagało to pisania tylu warunków np jedenk plik obsługuje pare zdarzeń np dodawanie zawodnika edycja zawodnika wyświetlanie listy zawodników kasowanie zawodnika

prosze o pomoc jak mogę zarządać wybranymi akcjami
markuz
  1. $mode = isset($_GET['mode']) ? $_GET['mode'] : 'index';
  2. $path = 'view/wyniki/'.$mode.'.tmp.php';
  3. if(file_exists($path))
  4. require $path;
  5. else
  6. require 'view/404.tmp.php';


PS. Powyższy przykład wczytuje widok na podstawie GET mode. Zainteresuj się MVC. W takim sam sposób możesz wczytywać kontrolery, a w nich dopiero widoki/modele.
ghastblood
Właśnie nad tym siedzę i się zastanawiam jak mogę to przerobić na MVC tylko zarządanie z poziomu indexu nie daje mi spokoju. Jak wchodzę na loclahost otwiera mi się index.php i z niego chciał bym zrobić przekierowanie na Kontroler Home a jak wejde na localhost/wyniki ładuje mi Kontroler Wyniki itd

bo przerobienie kodu na MVC raczej nie będzie trudne wydaje mi się że wystarczy osadzić to w klasie i metody nazwać tak jak jest w warunkach

  1. class ZawodnikController
  2. {
  3. public function index() {
  4. $view=$this->loadView('categories');
  5. $view->index();
  6. }
  7.  
  8. public function add() {
  9. $view=$this->loadView('categories');
  10. $view->add();
  11. }
  12. }




Przychodzi mi do głowy tylko pobranie adresu wprowadzone w przeglądarke rozbicie explode na tablice i ładowanie przez require_once 'controller/'.$zmiena z url;
markuz
Nie wymyślaj koła na nowo. Pobierz sobie jakieś przykładowe MVC i sprawdź jak to jest rozwiązane. Potem zaimplementuj to u siebie. Po wpisaniu w Google "simple php mvc" znajdziesz dużo przykładów głównie z github`a.
ghastblood
dzięki faktycznie jest to fajnie rozpisane i pokazane jak to działa mniej więcej. Teraz tylko pozostaje albo napisać coś co jest zrobione żeby zrozumieć jak to działa albo próbować przerobić sample bo np chciał bym pozostać czy smarty zeby nie przerabiać plików widoku

Mam pytanie odnośnie MVC korzystam z mini_master z github gdzie mogę zadeklarować klasę tak aby mieć dostęp do deklaracji z poziomu kontrolera modelu i widoku

jak przekazać zmienne z klasy do widoku
np w HomeController mam $test = '1';

i chciał bym ja przekazać do HomeView aby wyświetlić przypisać ją do smarty i wyświetlić

  1. class HomeView extends View
  2. {
  3. public function index()
  4. {
  5. echo $home->test;
  6. $this->render('home', 'index');
  7. }
  8. }


raczej odpada

Z tego co wiem to Model obsługuje całą logike połaczenia z bazą danych Widok odpowiada za warstwe końcową to co użytkownik widzi a kontroler przyjmuje dane wejściowe od użytkowników oraz reaguje na jego poczynania.

teraz robie wyświetlanie listy plików w katalogu z bazami danych sqlite czyli w modelu wykonuje stworzenie listy plików $files = glob(APP.'data/*.s3db'); i tą zmienna powinienem przekazać do widoku gdzie przypisze ją do smarty $tpl->assign('file', $files); a kontroler wyświetli mi widok $view = $this->LoadView('home'); $view->index();

chyba wpadłem jak to zrobić tylko nie jestem w 100% przekonany proszę o potwierdzenie


  1. class Player extends Controller
  2. {
  3. public function index()
  4. {
  5. //Pobiera wszystkich zawodników z MySql do tablicy
  6. $data['players'] = $this->model->getAllPlayers();
  7. //Wczytuje Widok
  8. $view = $this->LoadView('player');
  9. //Wczytuje Metode index z Widoku w której $data jest przydzielana do zmiennej Smarty
  10. $view->index($data);
  11. }
  12. }


pytanie czy to jest dobre rozwiązanie czy może jest jakieś prostrze
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.