![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 19.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Poczytałem o mvc i klasie router. Tworzy się coś takiego w linku: htpp/:nazwaKlasy/metoda. Ja mam moduł produkty i stworzyłem dla niego menu i podmenu. i chciałbym osiągnąć coś takiego w linku: http:menu/podmenu/nazwaProduktu. Jak coś takiego zrobić dynamicznie? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Korzystasz z jakiegoś frameworka lub sam napisałeś router?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 19.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
wszystko pisze sam od poczatku
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
To może podziel się tym jak obecnie napisałeś, bo jak inaczej mamy Tobie podpowiedzieć ?
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 27 Dołączył: 19.10.2014 Ostrzeżenie: (0%) ![]() ![]() |
Cos w tym stylu.
Cos na tej zasadziej. Pozniej uzywasz funkcji: Call_user_func Ktora automatycznie binduje parametry do Kontrollera. Wygladalo by to w ten sposob. Jesli osoba jako 3ci parameter wysle naprzyklad id I jest to jedyny parameter to w Kontrolerze mozesz do zdefiniowac naprzyklad:
Jest to dosc szybkie wyjasnienie, lecz jesli poczytasz o funkcji ktora ci podalem, a masz juz podstawowy router, to powinno ci sie udac ![]() Ten post edytował goartur 13.10.2016, 14:27:01 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat $router = $_GET['request'] questionmark.gif ''; $router = explode('/',$router); Tak z ciekawości to nie uważasz że lekka bzdura ? ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 27 Dołączył: 19.10.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem bzdura bo w zmiennej GET nie będziesz miał path z URI
![]() Tego trzeba szukać w $_SERVER |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Zobacz jak to jest rozwiązane w jakiś frameworkach. Utwórz klasę Routera z metodą dodającą routing (pattern i callback) do tablicy jako klucz stosujesz pattern z przypisanym callbackiem.
Taki pattern pozwoli na wyciągnięcie parametrów Potem metoda uruchamiająca routing przeszukująca utworzoną tablicę foreachem i kiedy znajdzie dopasowanie z przekazanym url użyj call_user_func_array z callbackiem i parametrami zwróconymi przez preg_match url z patternem. Ostatecznie plik z obsługą routingu gdzie używasz metody dodającej routing, a następnie metoda uruchamiająca router z parametrem url jako $_SERVER['REQUEST_URI']. -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 19.07.2015 Ostrzeżenie: (0%) ![]() ![]() |
Możecie mi to szczegołowo opisać na przykładzie bo nic z tego nie rozumie.
class router { private $controller; private $action; private $params; public function __construct(){ $path = $_GET['url']; $routParts = explode("/", $path); $this->controller = $routParts[0]; $this->action = isset($routParts[1]) ? $routParts[1] : "index"; array_shift($routParts); array_shift($routParts); $this->params = $routParts; //echo $_GET['url']; } Mam coś takiego co dalej? Ten post edytował stepien 15.10.2016, 09:36:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 23:13 |