Otóż w swoim projekcie użyłeś module i action, ja z kolei w swoim mam strona oraz podstrona, z tym nie ma problemu, spokojnie można pozamieniać jednak w tym przypadku:
2
3
4
$_GET['module'] = 'news';
$_GET['action'] = 'show';
Deklarujesz parametry jakie przyjmuje GET, u mnie tych parametrów jest trochę więcej i nie jestem w stanie operować tylko na tych dwóch.
W ramach testów zrobiłem takie coś
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
$_pi = '';
//w zależności od serwera nasza scieżka może się znajdować pod innym indeksem
if (!empty($_SERVER['PATH_INFO']))
$_pi = $_SERVER['PATH_INFO'];
if (empty($_pi) && !empty($_SERVER['ORIG_PATH_INFO']))
$_pi = $_SERVER['ORIG_PATH_INFO'];
$pathInfo = trim($_pi, '/'); //usuwamy znak / z końca
if (empty($pathInfo)) { //pusta ścieżka
return true;
}
$arr = explode('/',$pathInfo); //rozbijamy naszą ścieżkę na podstawie /
$count = count($arr);
if ($count == 1 && substr($pathInfo, -5) == '.html'){//mamy moduł news. pathinfo jest więc postaci nazwa-newsa,id.html
$_GET['strona'] = 'raporty';
$_GET['podstrona'] = 'tygodniowy';
//pobieramy nazwę oraz id czyli pobieramy nazwa-newsa,id
$nname = substr($pathInfo,0, strlen($pathInfo)-5);
//dzielimy na nazwę i id
$na = explode(',', $nname);
$_GET['week'] = $na[0];
$_GET['id'] = $na[1];
return true;
}
//pierwsze dwa elementy to moduł i akcja
$_GET['strona'] = $arr[0];
$_GET['podstrona'] = isset($arr[1]) ? $arr[1] : ''; //tu małe zabezpieczenie, gdyby ktoś zapomniał podać akcji
//następne elementy to nazwy parametru i parametr i tak co dwa
for ($i=2; $i < $count;$i+=2){
$_n = $arr[$i]; //nazwa parametru
$_v = isset($arr[$i+1]) ? $arr[$i+1] : ''; //wartość parametru
$_GET[$_n] = $_v;
}
return true;
}
/**
*
* Ścieżka w postaci module=moduł&action=akcja&par1=war1&par2=war2....
* @param string $path
*/
public function Url($path = null){
if (empty($path)) //pusta ścieżka
$pars = array();
else
$pars = explode('&', $path);
$params = array();
foreach ($pars as $_param){
$_arP = explode('=',$_param,2); //par=war dzielimy na par i war
$params[$_arP[0]] = isset($_arP[1]) ? $_arP[1] : '';
}
$strRet = '';
if (!empty($params)){
if ($params['strona'] == 'raport' && $params['podstrona'] == 'tygodniowy'){ //moduł news akcja show zamienimy na link .html
return $this->baseUrl.$params['week'].','.$params['id'].'.html';
} else { //każdy inny moduł leci standardowo modul/akcja/parametr/wartosc
foreach ($params as $_key => $_val){
if ($_key == 'strona' || $_key == 'podstrona')
$_key = '';
else
$_key.='/';
$strRet.="$_key$_val/";
}
}
}
return $this->baseUrl.htmlspecialchars($strRet);
}
Jednak po wejściu na adres /raport/tygodniowy strona się rozjechała (brak css) oraz nie wczytało oczekiwanej strony.
Co robię źle?
Pozdrawiam





