Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 19. 8. 2009, 20:13:14
Ahoj,
řeším stránky v Code Igniteru a narazil jsem na problém. Pokud mám friendly URL a adresa je třeba ../neco/neco2?parameter=4 Jak pak dostanu v Code Igniteru tu hodnotu 4? $this->input->get('parameter'); (a neposílejte mě na oficiální fórum CI, musel bych se tam pro zaslání příspěvku registrovat, tak třeba tu je nějaký šťastlivec s tímto frameworkem, který bude vědět) |
||
jso Profil * |
#2 · Zasláno: 19. 8. 2009, 20:16:30
joe
parse_str($_SERVER['QUERY_STRING'],$_GET); |
||
Aesir Profil |
#3 · Zasláno: 19. 8. 2009, 20:29:13
joe:
A co oficiální dokumentac? Ta je bez registrace. Zejména poslední odstavec v kapitole o URL by vám mohl pomoci. Jinak by to chtělo příště taky uvést v jakém contextu ten kód voláte (co je $this?). |
||
joe Profil |
#4 · Zasláno: 19. 8. 2009, 21:00:03
Aesir
Ne, to mi nepomůže, na to jsem se už myslím díval. Já chci zachovat friendly url a nechci vytvářet url jinak, jen chci mít možnost získat si tuto proměnnou. Zřejmě se jedná o bug, protože pokud jsou url řešené takhle, tak jak se všechno posílá na index rewritem a tohle autoři nedomysleli. jso To mi taky nepomůže. 1. V $_GET nic není, je to prázdné pole, protože je použit rewrite, nevím teď jak přesně tam je to pravidlo, ale zřejmě to vše posílá na index.php a do žádného parametru v url, to by vysvětlovalo, proč to pole je prázdné, pokud ho tam někde nepromazávají (ale proč by to dělali). V CI je téměř jedno v jakém contextu se to volá, nefunguje to nikde (model, view, controller) 2. QUERY_STRING mám prázdný. Pokud je adresa treba ../foo/bar?param=5 a použiju parse_str, tak klíč bude celý toto /foo/bar?param a to taky nechci :-) |
||
Aesir Profil |
#5 · Zasláno: 19. 8. 2009, 21:05:54 · Upravil/a: Aesir
joe
„V $_GET nic není, je to prázdné pole, protože je použit rewrite, nevím teď jak přesně tam je to pravidlo, ale zřejmě to vše posílá na index.php“ Ano tohle bude ten problém, ale není to problém Code Igniteru :) Zkopírujte sem všechna rewrite pravidla, řekl, že bude problém opravdu tam. |
||
joe Profil |
#6 · Zasláno: 19. 8. 2009, 21:14:23 · Upravil/a: joe
Aesir
A koho jiného by to byl problém? ;-) Prostě si myslím, že s tím nepočítali... Ale je možné, že to nějak jde. .htaccess, který se má podle dokumentace vytvořit zkráceně RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] Pokud by adresy byly "normálně", tj. s ? a následně &, pak by nebyl žádný problém. Hlavní problém je v tom, že nikde do $_GETu neukládají zpátky parametry z URL, které začíná otazníkem, pak by se asi problém vyřešil. |
||
Aesir Profil |
#7 · Zasláno: 19. 8. 2009, 21:21:05
joe:
RewriteRule ^(.*)$ index.php?/$1 [L] Předáváte celou cestu jako query string. Nestačilo by to takhle? Tím si jej nepřepíšete RewriteRule ^(.*)$ /index.php/$1 [L] |
||
joe Profil |
#8 · Zasláno: 19. 8. 2009, 21:22:38 · Upravil/a: joe
Ne, tak to nejde, pak to totiž nefunguje vůbec.
EDIT: Navíc tohle moc měnit nemůžu, to jsou pravidla daná pro CI, na které je CI vytvořen, je to prostě nedomyšlené pro cool url :-) |
||
Aesir Profil |
#9 · Zasláno: 19. 8. 2009, 21:28:32
joe:
„je to prostě nedomyšlené pro cool url “ Nesouhlasím. Je to sice už docela dost dlouhá doba, co jsem potkal tenhle framework, ale neměl jsem s GET parametry žádný problém. Stačilo správné nastavení enable_query_strings, uri_protocol, routování (resp. rewritu) a fungovalo to bez problémů. Pokud ani to nepomáhá, tak vám asi nic jiného než oficiální fórum nezbývá. |
||
joe Profil |
#10 · Zasláno: 19. 8. 2009, 22:08:54 · Upravil/a: joe
Aesir
To jste ale možná neměl podporu pro rewrite a byl použitý query string ve smyslu, že adresa byla ve tvaru ..?c=Controller&m=model&v=view¶m V tomhle případě zjištování fungovat bude. Nicméně jsem si to už obešel sám, kdyby to někdo potřeboval, tak jednoduše $get = explode('?', $_SERVER['REQUEST_URI']); if(isset($get[1])) { parse_str($get[1], $get); if(is_array($get)) { foreach($get as $param => $value) { $_GET[$param] = $value; } } } |
||
Aesir Profil |
#11 · Zasláno: 19. 8. 2009, 22:33:33
joe
„To jste ale možná neměl podporu pro rewrite a byl použitý query string ve smyslu, že adresa byla ve tvaru ..?c=Controller&m=model&v=view¶m “ Nikoliv, bylo to s nastavením rewritů na "cool URI". Pro podporu mého tvrzení dávám další odkazy, na googlu se dá také najít poměrně velké množství řešení. |
||
joe Profil |
#12 · Zasláno: 19. 8. 2009, 23:21:58
Aesir
Nevím, nefungovalo mi to. Nejsem žádný odborník na tento fw, dělám v něm pár dní, ale mít problémy při obyčejném zjišťování parametru z GET ... každopádně děkuji za pomoc. |
||
Časová prodleva: 15 let
|
0