Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [Code igniter] źle działąjący rooting
Forum PHP.pl > Forum > Przedszkole
Octobus
Mam taki rooting w Code igniter:

  1. $route['default_controller'] = "client/homepage";
  2. $route['admin'] = "admin/objects";
  3. $route['admin/(:any)'] = "admin/$1";
  4. $route['auth/(:any)'] = "auth/$1";
  5. $route['auth'] = "auth";
  6. $route['(:any)'] = "client/$1";
  7. $route['404_override'] = '';


i jak wpiszę strona.pl/obiekt/1 to zamiast wywolac kontroler obiekt z argumentem to jest 404 :/ próbowałem dorzucić do tego
$route['obiekt/(:any)'] = "client/obiekt/$1";
ale to nie działa, jeżeli z powyższej linijki usune /$1 to wtedy jest ok, ale nie przekazuje identyfikatora do kontrolera wiec tez lipa :/ nie wiem czy nie za bardzo zamotalem z tym rootingiem :/
markuz
A masz kontroler o nazwie "client" a w nim metodę "obiekt" z 1 parametrem?
Może masz dodatkowy kontroller o nazwie "obiekt" z metodą index bez żadnego argumentu?
Ja zawsze używałem CI w ten sposób:
Kontroler: ClientController
Metoda: showObjectAction($id)
Router: $route["obiekt/(:num)"] = "ClientController/showObjectAction/$1";

Wtedy nie masz problemów z nazewnictwem.
Ps. jak przekazujesz tylko id w parametrze to używaj (:num) zamiast (:any)

Edit. Dopiero teraz zauważyłem, że masz router: $route['(:any)'] = "client/$1";
Umieść go na początku zaraz po default_controller.

CI podmieni Ci wszystkie routery na ten ostatni przez co wszystko będzie Cię przenosić na client/$1.
Octobus
Cytat(markuz @ 3.04.2014, 07:16:51 ) *
A masz kontroler o nazwie "client" a w nim metodę "obiekt" z 1 parametrem?

mam folder client w nim kontroler obiekt (nazwa pliku i klasy taka sie zgadzaja)

Cytat(markuz @ 3.04.2014, 07:16:51 ) *
Może masz dodatkowy kontroller o nazwie "obiekt" z metodą index bez żadnego argumentu?

wlasnie nie ;/ poza tym jak daje bez parametru to dziala :/ dalem tak index($id = 1) i jak daje bez parametru to rooting wchodzi a funkcja sie wykonuje (nie brakuje argumentu)

Cytat(markuz @ 3.04.2014, 07:16:51 ) *
Ja zawsze używałem CI w ten sposób:
Kontroler: ClientController
Metoda: showObjectAction($id)
Router: $route["obiekt/(:num)"] = "ClientController/showObjectAction/$1";

Wtedy nie masz problemów z nazewnictwem.
Ps. jak przekazujesz tylko id w parametrze to używaj (:num) zamiast (:any)

Edit. Dopiero teraz zauważyłem, że masz router: $route['(:any)'] = "client/$1";
Umieść go na początku zaraz po default_controller.

CI podmieni Ci wszystkie routery na ten ostatni przez co wszystko będzie Cię przenosić na client/$1.



zmieniłem na:
  1. $route['default_controller'] = "client/homepage";
  2. $route['(:any)'] = "client/$1";
  3. $route['admin'] = "admin/objects";
  4. $route['admin/(:any)'] = "admin/$1";
  5. $route['auth/(:any)'] = "auth/$1";
  6. $route['auth'] = "auth";
  7. $route['404_override'] = '';



ale nic sie nie zmienilo, mam podzielona aplikacje na client/admin dla tego taki rooting ...
markuz
CI nie przewiduje osobnych folderów na kontrolery.. Jak wpiszesz client/obiekt/1 to wtedy CI szuka kontrolera o nazwie Client z metodą obiekt i 1 parametrem..
Octobus
ale w admin'ie to dziala, mam np. strona.pl/admin/objects/edit/1 i mi wchodzi do kontrolera objects, metode edit z parametrem 1
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.