Routes – problém s hezkou url adresou
- Jakub Kontra
- Člen | 30
Zdravím mám takový menší problém s Routama.
Mám presenter pages, který reprezentuje všechny dynamické stránky, které
si může vytvořit sám uživatel. Bohužel se k nim dostanu pouze přes http://localhost/…pages/view/3 → Konkrétně tato URL
znázorňuje kontakt.. potřeboval bych udělat http://localhost/www/kontakt.
Vím že je problém někde v routách bohužel nevím kde.
Díky
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
$container->router[] = new Route('<id>/', array(
'module' => 'Front',
'presenter' => 'Pages',
'action' => 'view',
'id' => array(
Route::FILTER_OUT => callback('Models\Pages::getUrlById'),
Route::FILTER_IN => callback('Models\Pages::getIdByUrl')
)
));
- Tomtom
- Člen | 3
Zkus se kouknout na " VIDEO od Pandy":https://www.youtube.com/watch?…
Velice pěkně vysvětlené
- bojovyletoun
- Člen | 667
Tenhle měsíc se tu tahle chyba opkuje už podruhý: routy mají prioritu
odshora, takže na třetí routy nikdy nedojde.
https://doc.nette.org/…tion/routing#…
- Jakub Kontra
- Člen | 30
Už jsem to rozchodil.. chyba byla někde jinde.. a to v tom že jsem prohodil dvě Fce :--) Díky
- Jakub Kontra
- Člen | 30
Tak tu mám teď jiný problém..
Potřebuji URL ve tvaru /reference/urlzdb/informace
/reference/urlzdb/fotogalerie
Nedokáži přijít kde dělám chybu, mohl by mne někdo navést na správné řešení? Děkuji
$container->router[] = new \Artnok\ExtendedRouters\ReferenceRouter('<presenter>/<id>/', array(
'module' => 'Front',
'presenter' => 'Reference',
'action' => 'view',
'id' => array(
Route::FILTER_OUT => callback('ArtnokCMS\Models\Reference::getUrlById'),
Route::FILTER_IN => callback('ArtnokCMS\Models\Reference::getIdByUrl')
)
));
//extended router
namespace Artnok\ExtendedRouters;
class ReferenceRouter extends \Nette\Application\Routers\Route {
/** @var SystemContainer */
public $context;
public function match(\Nette\Http\IRequest $request) {
/** @var $appRequest \Nette\Application\Request */
$appRequest = parent::match($request);
if ($appRequest === NULL) {
return NULL;
}
if (!is_numeric($appRequest->parameters['id'])) {
$page = \ArtnokCMS\Models\Reference::getIdByUrl($appRequest->parameters['id']);
if ($page == NULL) {
return NULL;
}
$params = $appRequest->parameters;
$params['id'] = $page->id;
$appRequest->parameters = $params;
}
return $appRequest;
}
}