Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CI] routeing
Forum PHP.pl > Forum > PHP > Frameworki
CI
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.
grzesiek_g
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ć.
CI
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. ?
CI
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ć ?
grzesiek_g
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?
CI
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...
CI
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 ?
grzesiek_g
To przecież podałem ci przykład z wyrażeniami regularnymi.
CI
  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-" ?
Sabistik
Przenoszę do odpowiedniego działu, jeśli chcesz kontynuować zarejestruj się.
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.