Jak správně routovat modul

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

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;
marioff
Člen | 69
+
0
-

nemas tam mat Frontend ?

Felix
Nette Core | 1247
+
+1
-
  • mas spravne namespace?
  • mas spravne pojmenovany presenter?
  • dedi od spravneho predka?
  • nacita to spravne RobotLoader?
  • vymazal jsi pro jistotu temp?
TomasHuttner
Člen | 66
+
0
-

Felix napsal(a):

  • mas spravne namespace?
  • mas spravne pojmenovany presenter?
  • dedi od spravneho predka?
  • nacita to spravne RobotLoader?
  • vymazal jsi pro jistotu temp?
  1. Namespace v presentrech mám:
namespace FrontModule;
  1. Presenter mám správně pojmenovaný.
  2. Presenter dědí od BasePresenteru který je taky v v FrontModule ve složce presenters
  3. No neví jak zjistit jestli RobotLoader načítá správně.
  4. temp sem zmazal a je to bez výsledku…
Šaman
Člen | 2666
+
0
-

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…

TomasHuttner
Člen | 66
+
0
-

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

Š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

David Matějka
Moderator | 6445
+
0
-

RegistracePresenter !== RegisterPresenter

TomasHuttner
Člen | 66
+
0
-

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

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

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

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

Jan Endel
Člen | 1016
+
0
-

Co znamená „nefunguje“ ?

TomasHuttner
Člen | 66
+
0
-

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)

Jan Endel
Člen | 1016
+
0
-

Určitě tam máš tu první dvojtečku?

ali
Člen | 342
+
-1
-

Zkus zadat i view

$this->redirect(':Admin:Homepage:default');
TomasHuttner
Člen | 66
+
0
-

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());
   }
}
Jan Endel
Člen | 1016
+
0
-

No a ten AdminModule\HomepagePresenter máš? Nette pokud nenajde tenhle presenter tak fallbackuje na další možnosti co jsi mohl myslet a zahlásí až tu poslední.

Quinix
Člen | 108
+
0
-

Evidentně ti router bere routu na front modul místo admin. Routy musí být definované od konkrétních po obecné… jak vypadá tvoje RouterFactory? (odkaz na GH už nefunguje)

TomasHuttner
Člen | 66
+
0
-

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;
	}
Jan Endel
Člen | 1016
+
0
-

To neni umisteni ve filesystemu, to je namespace, je v takovem namespace? Umisteni je v poradku.

David Matějka
Moderator | 6445
+
0
-

Prohod routy, tu pro admin dej pred tu obecnou

TomasHuttner
Člen | 66
+
0
-

Díky matej21! problém vyřešen