Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nice url - co dalej ?
Szymciosek
post 9.07.2012, 22:18:14
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Tak jak w temacie, chciałbym jakoś prosto rozwiązać sprawę nice url żeby z takiego linku:
www.xx.pl/gallery/show/12

wyciągnąć i odpalić po kolei:
kontroler: gallery
metoda: show
parametr: 12

do tej pory osiągnąłem takie coś:
  1. <?php
  2.  
  3. //include('config.php');
  4. include('application/SimpleUrl.class.php');
  5.  
  6. function classAutoloader($class)
  7. {
  8. include ('controllers/'.$class.'.controller.php');
  9. }
  10. spl_autoload_register('classAutoloader');
  11.  
  12. $url = new SimpleUrl('/labs/mvc3');
  13. $url_controller = $url->segment(1);
  14. $url_action = $url->segment(2);
  15. $url_param = $url->segment(3);
  16.  
  17. if ($url_controller)
  18. {
  19. $controller = new $url_controller;
  20.  
  21. if ($url_action && $url_param)
  22. {
  23. $controller->$url_action($url_param);
  24. }
  25. elseif ($url_action)
  26. {
  27. $controller->$url_action();
  28. }
  29. } else {
  30. $controller = new Home;
  31. }
  32.  
  33.  
  34.  
  35. ?>


oraz simpleUrl:
  1. <?php
  2.  
  3. class SimpleUrl
  4. {
  5. var $site_path;
  6.  
  7. public function __construct($site_path)
  8. {
  9. $this->site_path = $this->removeSlash($site_path);
  10. }
  11.  
  12. public function __toString()
  13. {
  14. return $this->site_path;
  15. }
  16.  
  17. private function removeSlash($string)
  18. {
  19. if ($string[strlen($string) - 1] == '/')
  20. {
  21. $string = rtrim($string, '/');
  22. }
  23.  
  24. return $string;
  25. }
  26.  
  27. public function segment($segment)
  28. {
  29. $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
  30. $url = explode('/', $url);
  31. if (isset($url[$segment]))
  32. {
  33. return $url[$segment];
  34. } else {
  35. return false;
  36. }
  37. }
  38. }
  39.  
  40. ?>


Teraz to działa, ale tylko jeśli plik nazywa się Home.controller.php, a ja chciałbym zrobić tak:

$controller = new HomeController;

żeby ta część ładowała mi plik Home.controller.php

a w linku wyświetlało się www.xx.pl/home

da się to zrobić ?

Ten post edytował Szymciosek 9.07.2012, 22:18:41
Go to the top of the page
+Quote Post
irmidjusz
post 10.07.2012, 01:52:37
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


Pewnie, że się da. Jest już zrobione w mnóstwie gotowych frameworków. Wygoogluj np. "php framework routing".


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
Szymciosek
post 10.07.2012, 07:47:16
Post #3





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


O tym to ja dobrze wiem, ale szukam bardziej gotowych źródeł, sam już szukałem co nieco, jedno nie działa za bardzo, a inne znowu jest tak namieszane, że nie da się po ludzku tego pojąć...
Go to the top of the page
+Quote Post
Mephistofeles
post 10.07.2012, 08:13:11
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Chcesz gotowca?
https://github.com/symfony/Routing
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 08:30