Jak správně routovat modul
- TomasHuttner
- Člen | 66
Ahoj, mám modul FrontModule ve kterým mám presenter RegistracePresenter ale chyba mi hází že je presenter hledán v FrontModule viz chyba:
Nette\Application\BadRequestException #404
Cannot load presenter 'Front:Registrace', class 'FrontModule\RegistracePresenter' was not found in 'C:\xampp\htdocs\RedakcniSystem\app/FrontModule/presenters/RegistracePresenter.php'.
Routa:
$router = new RouteList();
// Front
$router[] = new Route('[<lang cs|sk|en>/]<presenter>/<action>[/<id>]', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
));
return $router;
- TomasHuttner
- Člen | 66
Felix napsal(a):
- mas spravne namespace?
- mas spravne pojmenovany presenter?
- dedi od spravneho predka?
- nacita to spravne RobotLoader?
- vymazal jsi pro jistotu temp?
- Namespace v presentrech mám:
namespace FrontModule;
- Presenter mám správně pojmenovaný.
- Presenter dědí od BasePresenteru který je taky v v FrontModule ve složce presenters
- No neví jak zjistit jestli RobotLoader načítá správně.
- temp sem zmazal a je to bez výsledku…
- TomasHuttner
- Člen | 66
Prosím tě jak mám ten projekt nahrát na github ještě sem github nikdy nepoužil a nějak sem nepřišel jak na to
- TomasHuttner
- Člen | 66
Šaman napsal(a):
Pošli odkaz na celý tvůj projekt na Githubu, nebo Bitbucketu. Někde tam máš chybu a bez kódu těžko poradíme kde…
Tak hle vypadá ten můj projekt na GitHubu
- TomasHuttner
- Člen | 66
Díky! To je fakt hrozný ta moje nepozornost :(
A ještě bych se chtěl zeptat jak mám vytvořit odkaz? tento způsob mi nefunguje odkaz je červený
- Jan Endel
- Člen | 1016
Buď uváděj cesty bez : na začátku, potom se berou presentery z aktuálního modulu tedy:
Registrace:default
nebo když už tam mermomoci chceš tu dvojtečku dát, tak se to bere „absolutně“ a tam ti chybí module tedy takto:
:Front:Registrace:deafult
btw 1: default akci nemusíš uvádět, máš ji jako výchozí uvedenou v routách, tedy nejjednodušeji takto:
Registrace:
btw 2: vymýť ze svých kódů české slova v názvech tříd/metod, krásných url lze dosáhnout i jinak :-).
- TomasHuttner
- Člen | 66
Jan Endel napsal(a):
Buď uváděj cesty bez : na začátku, potom se berou presentery z aktuálního modulu tedy:
Registrace:default
nebo když už tam mermomoci chceš tu dvojtečku dát, tak se to bere „absolutně“ a tam ti chybí module tedy takto:
:Front:Registrace:deafult
btw 1: default akci nemusíš uvádět, máš ji jako výchozí uvedenou v routách, tedy nejjednodušeji takto:
Registrace:
btw 2: vymýť ze svých kódů české slova v názvech tříd/metod, krásných url lze dosáhnout i jinak :-).
Díky moc už to funguje. A díky za dobrý tip podívám se na to :)
- TomasHuttner
- Člen | 66
Ještě bych měl jednu otázku. Jak se po přihlášení přesměruji na
AdminModule?
Mám to takhle ale nefunguje mi to
$this->redirect(':Admin:Homepage:');
a chci se z FrontModule přesměrovat na AdminModule
- TomasHuttner
- Člen | 66
Háže zase chybu:
Nette\Application\BadRequestException #404
Cannot load presenter 'Front:Admin', class 'FrontModule\AdminPresenter' was not found in 'C:\xampp\htdocs\RedakcniSystem\app/FrontModule/presenters/AdminPresenter.php'.
Nechápu proč to hledá ve FrontModule když odkazuju na AdminModule
Editoval TomasHuttner (20. 12. 2014 1:01)
- TomasHuttner
- Člen | 66
Přihlašování mám přesně takhle a je umístěno v BasePresenteru
public function processSignInForm(Form $form) {
$values = $form->getValues();
try {
$this->user->login($values->email, $values->pass);
$this->flashMessage('Vítejte v administraci!', 'success');
$this->redirect(':Admin:Homepage:default');
} catch (Nette\Security\AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
- TomasHuttner
- Člen | 66
Ten presenter je v modulu na pozici AdminModule\presenters\HomepagePresenter ta nechápu proč je hledaný v AdminModule\HomepagePresenter.
Celá moje routa vypadá tato:
public function createRouter()
{
$router = new RouteList();
// Front
$router[] = new Route('<presenter>/<action>[/<id>]', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
));
// Admin
$router[] = new Route('admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
return $router;
}