Podivné chovaní Nette
- TanisCZ
- Člen | 80
Zdravím, mám takový zvláštní problém, který se asi týká routování/odkazování.
Mám určitý kod
<li><a href="{plink admin:pridejObjekt}">Přidat nový objekt</a></li>
,
kde okdazujuju na presenter AdminPresenter a na pohled pridejOBjekt. Sablonu mam
spravne v Templates/Admin/pridejObjekt.phtml
Routování mám nastaveno takto :
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'default',
'action' => 'default',
'id' => NULL,
));
A teď k problému – na testovacím serveru mi vše funguje
v pořádku. Nicméně na produkčním mám problémy a to, že po odkazu
dostanu 404 Not Found.
Pokud zakomentuju všechny routy, tak vše funguje, nicméně mám url ve tvaru : ip_adresa/nazev_stranky/?action=pridejObjekt&presenter=Admin a toto url funguje.
Takže kde dělám chybu?
`
- TanisCZ
- Člen | 80
Mám ho vytáhnutý z příkladů na Nette :
# configure PHP
# <IfModule mod_php5.c>
# php_flag magic_quotes_gpc off
# php_flag register_globals off
# </IfModule>
# mod_rewrite
RewriteEngine On
RewriteBase /
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
Editoval TanisCZ (23. 10. 2008 14:53)
- TanisCZ
- Člen | 80
Omlouvám se za ten zápis…
Stále mám ale jeden velice divnej problém.
Píšu ještě jednu aplikaci v Nette a mám dva presentery.
AukcePresenter,IaukcePresenter
a router nastavený na :
$router[] = new Route('<presenter>/<action>', array(
'presenter' => 'Aukce',
'action' => 'default',
));
Co je divný : v šablonách se odkazuju {plink aukce:pohled} nebo {plink
iaukce:pohled}
Na iaukci odkazování mi jde v pohodě, ale jakmile chci odkazovat na
aukcePresenter, tak dostávám stejnou chybu jako jsem psal na začátku.
Mod_rewrite v pořádku běží, tempy jsem mazal stokrát.
Při experimentování jsem zjistil, že když nahradím AukcePresenter za
jakýkoliv jiný presenter – AuctionPresenter,CsPresenter,DefaultPresnter a
překopíruji příslušné šablony, vše funguje.
Jakmile zkouším odkazovat na AukcePresenter dostanu vždy stejnou chybu…
Šablony mám snad v pořádku v templates/Aukce/default.phtml apod…
Už jsem vyzkoušel uplně vše a pořád nic :-(
Testy provádím na Vistě 64, PHP 2.5.6 a nejnovější Apache
- David Grudl
- Nette Core | 8218
Jak píše phx, na Linuxu se (téměř vždy) rozlišují velká a malá písmenka v názvech souborů. Aby Nette mohlo najít soubor se třídou presenteru, musí buď
- dostat jeho název se správnou velikostí písmen (tj. vytvářet odkazy
{plink Aukce:pohled}
namísto{plink aukce:pohled}
) - mít aktivní třeba RobotLoader, kterému na velikosti písmen nezáleží
A nebo zkombinovat obojí ;)