Podivné chovaní Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TanisCZ
Člen | 80
+
0
-

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?
`

phx
Člen | 651
+
0
-

Vymazal jsi soubory z temp pri update?

TanisCZ
Člen | 80
+
0
-

Jo jo :)

TanisCZ
Člen | 80
+
0
-

Nejhorší je, že mi ani Laděnka neřekne co a jak, protože se nedostane ke slovu.
Dostanu The requested URL /piv/admin/pridej-uzivatele/ was not found on this server.
A ani mě Nette nepřesměruje na Error Presenter :-(

phx
Člen | 651
+
0
-

To vypada na rewrite mod. Smerujes vsechno na index.php ? Neprepsal jsi/nezapomel jsi .htaccess ?

Editoval phx (23. 10. 2008 14:30)

TanisCZ
Člen | 80
+
0
-

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
+
0
-

Mám to!
Opravdu byl problém v mod_rewrite.
U nového Apache2 se tento modul instaluje kapku jinak, takže jsem ho neměl aktivovanej.
Dík za nakopnutí…

phx
Člen | 651
+
0
-

:)

David Grudl
Nette Core | 8218
+
0
-

Formátujte prosím zdrojový kód podle návodu.

TanisCZ
Člen | 80
+
0
-

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

phx
Člen | 651
+
0
-

Pozor na VELKA a mala pismenka! Predpokladam, ze server jede na Linuxu a tam to nejde.

TanisCZ
Člen | 80
+
0
-

Dávám pozor presentery AukcePresenter – class AukcePresenter sablony – templates/Aukce/default.phtml – v routeru u presenteru velká Aukce. A jinak tenhle testovaci server běží na win

David Grudl
Nette Core | 8218
+
0
-

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í ;)

TanisCZ
Člen | 80
+
0
-

Obojí mám zkombinovaný – a používám {plink Aukce:pohled} a používám RobotLoader
Zkoušel jsem to i bez něj, ale pořád nic :-(
Zajímavý je, že jakýkoliv jiný presenter, který vytvořim bezproblémů jde :-(

phx
Člen | 651
+
0
-

Neni to spise logicka chyba nez problem Nette? Vypni si automaticke presmerovani v prohlizeci at vidis zda se nekam nepresmerovavas sam/omylem.

TanisCZ
Člen | 80
+
0
-

Taky se pořád utvrzuju v tom, že je to spíš logická chyba…
Ale už jsem zkoušel uplně vše :-(

phx
Člen | 651
+
0
-

Bez zdrojaku tezko radit.

Zkousel bych Debug::dump() a dobra finta je taky throw new Exception() coz zachyti ladenka a vypise ti kudy program sel. Nekdy se to muze hodit k rychlejsimu nalezeni co co a jak volalo. Treba tu botu najdes;)

TanisCZ
Člen | 80
+
0
-

Jasně, můžu to zkusit, ale problém je ten, že já dostanu ihned na kliknutí od apache 404 Not found. Ale tedka nebudu mít přes víkend čas si s tím hrát, tak dám vědět po víkendu…

phx
Člen | 651
+
0
-

Chyba 404 je apache? Ze by stale rewrite? Pokud ale casti app jdou, zkusil bych vyhodit vsechny routy v app at to jede bez hezkych URL. At vime zda to vubec jede.

TanisCZ
Člen | 80
+
0
-

Ok v neděli se na to mrknu. A dám vědět. Moc dík za ochotu…