Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CI] routeing, Routing
-CI-
post 5.03.2008, 15:03:18
Post #1





Goście







Witam,

W necie znalazłem pełno przykładów z wyrażeń regularnych w routingu np.:
  1. <?php
  2. $route['klasa/:any']='klasa/index';
  3. ?>


ale nie wiem jak pozbyć się z adresu nazwy klasy, w CakePHP jest to banalnie proste:
  1. <?php
  2. Router::connect ('/*', array('controller'=>'podstrony', 'action'=>'podstrona'));
  3. ?>


Próbowałem napisać coś takiego $route[':any'] = ... - ale nie działa sad.gif

Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
grzesiek_g
post 5.03.2008, 15:20:32
Post #2





Grupa: Zarejestrowani
Postów: 249
Pomógł: 30
Dołączył: 18.07.2007

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


Tutaj masz dwa przykłady:
  1. <?php
  2. $route['privacy-policy'] = 'main/privacy_policy/';
  3. $route['services-([A-Za-z-_0-9]*)'] = 'main/services/$1'
  4. ?>

To cię powinno naprowadzić.


--------------------
Warsztat: Ubuntu 12.10, PHPStorm
http://vertoo.pl
Go to the top of the page
+Quote Post
-CI-
post 5.03.2008, 16:42:48
Post #3





Goście







Cytat(grzesiek_g @ 5.03.2008, 15:20:32 ) *
Tutaj masz dwa przykłady:
  1. <?php
  2. $route['privacy-policy'] = 'main/privacy_policy/';
  3. $route['services-([A-Za-z-_0-9]*)'] = 'main/services/$1'
  4. ?>

To cię powinno naprowadzić.


Nie ma możliwości zrobić adresu takiego jak w Cake ? ->
www.strona.pl/podstrona
www.strona.pl/drugapodstrona, itp. ?
Go to the top of the page
+Quote Post
-CI-
post 5.03.2008, 17:02:21
Post #4





Goście







Po prostu chodzi mi o to że jeśli w adresie nie będzie nazwy kontrolera - wtedy będzie wywołany domyślny kontroler ze zmienną podaną w adresie... - pytanie tylko jak to zrobić ?
Go to the top of the page
+Quote Post
grzesiek_g
post 5.03.2008, 17:29:30
Post #5





Grupa: Zarejestrowani
Postów: 249
Pomógł: 30
Dołączył: 18.07.2007

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


Ale przecież przeczytaj moje przykłady jeszcze raz.
Np w pierwszym mamy adres:
http://example.com/privacy-policy
W drugim:
http://example.com/services-nazwa
ale może być i tak:
http://example.com/jakasstrona - i kieruje to na kontroler np /main/newsy

A domyślny kontroler? Przecież masz to w pliku konfiguracyjnym, oglądaleś ten plik?


--------------------
Warsztat: Ubuntu 12.10, PHPStorm
http://vertoo.pl
Go to the top of the page
+Quote Post
-CI-
post 5.03.2008, 17:45:28
Post #6





Goście







Cytat(grzesiek_g @ 5.03.2008, 17:29:30 ) *
Ale przecież przeczytaj moje przykłady jeszcze raz.
Np w pierwszym mamy adres:
http://example.com/privacy-policy
W drugim:
http://example.com/services-nazwa
ale może być i tak:
http://example.com/jakasstrona - i kieruje to na kontroler np /main/newsy

A domyślny kontroler? Przecież masz to w pliku konfiguracyjnym, oglądaleś ten plik?



Oglądałem ten plik - ale jeśli mam np. 10 stron w menu - z możliwością rozbudowy to wtedy musze używać np. www.strona.pl/cos/strona1 , www.strona.pl/cos/strona2, www.strona.pl/cos/strona3

I jak można się pozbyć tego "cos" -> czyli nazwy kontrolera - żeby był on wywoływany domyślnie czyli adres miałby wyglądać tak www.strona.pl/strona1 - i wtedy wywoływany jest kontroler cos, natomiast jeśli link będzie wyglądał np. www.strona.pl/cos2/2/opis-linku - to wtedy już standardowo wywoływany jest kontroler cos2 itp. W CakePHP jest coś takiego:

Router::connect ('/', array('controller'=>'glowny_kontroler', 'action'=>'index'));
Router::connect ('/l/', array('controller'=>'glowny_kontroler', 'action'=>'index'));
Router::connect ('/a/', array('controller'=>'inny_kontroler', 'action'=>'index'));
Router::connect ('/a/strona/*', array('controller'=>'inny_kontroler', 'action'=>'index'));
Router::connect ('/a/*', array('controller'=>'inny_kontroler', 'action'=>'moja_funkcja'));
Router::connect ('/szukaj/*', array('controller'=>'kontroler_szukaj', 'action'=>'index'));
Router::connect ('/newsletter/*', array('controller'=>'kontroler_newsletter', 'action'=>'index'));
Router::connect ('/l/*', array('controller'=>'glowny_kontroler', 'action'=>'moja_funkcja'));
Router::connect ('/*', array('controller'=>'glowny_kontroler', 'action'=>'moja_funkcja')); - bez nazwy kontrolera i wywołanie funkcji innej niż index

I na tej samej zasadzie chciałbym zrobić linki w CI - czyli pozbyć się nazwy kontrolera / funkcji - dla wybranych warunków...
Go to the top of the page
+Quote Post
-CI-
post 5.03.2008, 17:50:15
Post #7





Goście







Cytat(grzesiek_g @ 5.03.2008, 17:29:30 ) *
ale może być i tak:
http://example.com/jakasstrona - i kieruje to na kontroler np /main/newsy


O to mi właśnie chodzi - tylko jak mam napisać do tego router'a ? - nie dla kazdej strony z osobna

$route['jakasstrona'] = "main/newsy";
$route['jakasstrona2'] = "main/newsy";
$route['jakasstrona3'] = "main/newsy";

Tylko jak zrobić to uniwersalnie ?
Go to the top of the page
+Quote Post
grzesiek_g
post 5.03.2008, 18:07:49
Post #8





Grupa: Zarejestrowani
Postów: 249
Pomógł: 30
Dołączył: 18.07.2007

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


To przecież podałem ci przykład z wyrażeniami regularnymi.


--------------------
Warsztat: Ubuntu 12.10, PHPStorm
http://vertoo.pl
Go to the top of the page
+Quote Post
-CI-
post 5.03.2008, 18:10:44
Post #9





Goście







  1. <?php
  2. $route['services-([A-Za-z-_0-9]*)'] = 'main/services/$1'
  3. ?>


Ale Twój przykład musi zaczynać się od jakiejś litery/slowa/znaku ,jak można całkowicie pozbyć się "services-" ?
Go to the top of the page
+Quote Post
Sabistik
post 5.03.2008, 19:05:18
Post #10


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Przenoszę do odpowiedniego działu, jeśli chcesz kontynuować zarejestruj się.
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: 26.04.2024 - 10:42