Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Prosty Router czy coś w tym stylu
ghastblood
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


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

Ten post edytował ghastblood 4.06.2015, 10:52:37
Go to the top of the page
+Quote Post
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  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.

Ten post edytował markuz 4.06.2015, 13:08:23
Go to the top of the page
+Quote Post
ghastblood
post
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


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;
Go to the top of the page
+Quote Post
markuz
post
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


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.
Go to the top of the page
+Quote Post
ghastblood
post
Post #5





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


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

Ten post edytował ghastblood 4.06.2015, 16:29:26
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 13:36