Nový presenter – stránka nenalezena
- lordfrikk
- Člen | 5
Zdravím, stáhl jsem si Nette, rozbalil složku sandbox s předpřipravenou kostrou a spustil – vše funguje jak má. Dále jsem vytvořil nový presenter GuessPresenter.php, obsah:
<?php
class GuessPresenter extends BasePresenter
{
//put your code here
public function actionDefault()
{
}
public function renderDefault()
{
$this->template->message = 'OBSAH!';
}
}
?>
Dále složku Guess ve složce templates a v ní default.phtml, který obsahuje:
{block content}
<div id="message">
{$message}
</div>
Výsledek: stránka nenalezena! Pokud změním v bootstrap.php:
<?php
$router[] = new NRoute('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), NRoute::ONE_WAY);
$router[] = new NRoute('<presenter>/<action>/<id>', array(
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
?>
na:
<?php
$router[] = new NRoute('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), NRoute::ONE_WAY);
$router[] = new NRoute('<presenter>/<action>/<id>', array(
'presenter' => 'Guess',
'action' => 'default',
'id' => NULL,
));
?>
… tak to funguje, ale nefunguje samozřejmě pak Homepage :) Bohužel si s tím nevím rady, takže bych ocenil jakoukoli pomoc, vsadím se, že to bude nějaká hloupost, kterou jsem přehlédl…
- Aurielle
- Člen | 1281
Routy nech tak jak jsou, a na ten presenter by ses měl dostat přes http://localhost/…ojekt/guess/
- lordfrikk
- Člen | 5
Ano, samozřejmě. Základní stránka je http://localhost/todolist/www/ a pokud se přesunu na http://localhost/…st/www/guess tak mi Firefox (i Chrome) píše „The requested URL /todolist/www/guess/ was not found on this server.“
- voda
- Člen | 561
A máš aktivovaný mod_rewrite? Zakomentuj druhou routu a zkus adresu http://localhost/todolist/www/?….
- Mikulas Dite
- Člen | 756
Tak to potom bude problém s .htaccess, kde díky požadavku na
''
a DirectoryIndex
funguje jenom první strana.
- lordfrikk
- Člen | 5
voda napsal(a):
A máš aktivovaný mod_rewrite? Zakomentuj druhou routu a zkus adresu http://localhost/todolist/www/?….
Zakomentoval jsem a výsledkem je:
NBadRequestException #404
No route for HTTP request.
Mikulas Dite napsal(a):
Tak to potom bude problém s .htaccess, kde díky požadavku na
''
aDirectoryIndex
funguje jenom první strana.
Nevím proč, ale .htaccess, který je součástí sanboxu, obsahuje pouze:
Order Allow,Deny
Deny from all
Tak jsem to doplnil o:
<IfModule mod_rewrite.c>
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]
</IfModule>
Výsledek: přesměrování vždy na homepage (pokud použiju odkaz s normálními php parametry, pokud použiju „cool url“ tak je stránka nenalezena v případě GuessPresenter).
Editoval lordfrikk (5. 1. 2011 20:12)
- Mikulas Dite
- Člen | 756
Upravuješ špatný .htacess. Změň ten v rootu nebo v www (teď nevím,
kde to má skeleton), každopádně to určitě nemá být ten s
Deny from all
.
- lordfrikk
- Člen | 5
To si nemyslím. Nicméně to postráda smysl, jelikož jsem celý adresář smazal a nainstaloval nejnovější 2.0-dev verzi tady z webu. Spustil sem adresář sandbox, který hned funguje (není nutné kopírovat Nette do /libs) a zajímá mě, jaké je defaultní chování, když mám zapnutý debug a snažím se dostat na nějakou adresu, pro kterou neexistuje presenter. Neměla by to být vyjímka? Já pořád dostávám stránka nenalezena… něco je špatně. Když vymažu template od Homepage tak to hned hodí rudou vyjímku, ale ono to vůbec neregistruje existenci nějakých dalších presenterů kromě toho základního…
BTW, v rootu žádný .htaccess defaultně není a ani jeho překopírování nepomůže (zobrazí se adresář).
Uvažuju, jestli by nestálo za to kompletně všechno přeinstalovat…
EDIT: Takže jak jsem říkal. Odinstaloval jsem vše, stáhl XAMPP, spustil a hned jakmile jsem zadal nějakou adresu pro kterou neexistoval presenter, tak vyjímka… nikdy bych nečekal, že to uvidím tak rád… hurá do práce :)
Editoval lordfrikk (5. 1. 2011 23:05)