nefungující routování – upravený příklad quickstartu
- doomed
- Člen | 17
Zdravím, snažím se přijít na to, jak používat routování, ale tady jsem naprosto vytuhl. Mám projekt TodoList, mám HomepagePresenter v něm tři view default, edit, delete. Předesílám, že mod_rewrite mám povolen. Při zadání adresy htpp://localhost/TodoList/document_root mi Laděnka hlásí „BadRequestException #404 No route for HTTP request“.
Zde je obsah .htaccess:
# disable directory listing
Options -Indexes
# configure PHP
# <IfModule mod_php5.c>
# php_flag magic_quotes_gpc off
# php_flag register_globals off
# php_flag zend.ze1_compatibility_mode off
# </IfModule>
# mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /TodoList/document_root/
# 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>
Zde je fragment bootstrap.php
<?php
$router = $application->getRouter();
$router[] = new Route('uvod', array(
'presenter' => 'Homepage',
'action' => 'default',
));
$router[] = new Route('edit/<id>', array(
'presenter' => 'Homepage',
'action' => 'edit',
));
$router[] = new Route('delete/<id>', array(
'presenter' => 'Homepage',
'action' => 'delete',
));
?>
Díky za odpověď.
- Foowie
- Člen | 269
Když tam dáš index.php
tak budeš mít definováno
document_root/index.php
, ale pořád ne
document_root/
:)))
Když se podíváš do quick startu tak tam je něco takového:
// tahle část definuje co se má dělat při document_root/index.php
// parametr Route::ONE_WAY znamená že se z téhle routy nebudou generovat odkazy
$router[] = new Route('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
// Tady je definovaná routa ve tvaru document_root/PRESENTER/ACTION/ID
// V dalším parametru (v poli) jsou definovány defaultní hodnoty jednotlivých parametrů
// Pokud tyto parametry nejsou v URL přítomny, doplní se z defaultních hodnot
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
Pokud bys měl tedy jen document_root/
tak z ukázky v quick
startu se ti request přeloží podle druhé z rout. Jelikož do URL nebyl
přidán žádný parametr, pokusí se dosadit z defaultních hodnot.