Problém s modulem a routováním

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

Zdravím, rozhodl jsem se poprvé v Nette aplikaci využít moduly pro lepší členění a podobně, ale nedaří se mi je rozchodit.

Struktura složek je následující:
app
…FrontModule
......presenters
.........BasePresenter.php
.........DefaultPresenter.php
......templates
.........Default
............default.latte

BasePresenter obsahuje toto:

<?php
namespace FrontModule;
use Nette, Model;
abstract class BasePresenter extends Nette\Application\UI\Presenter {
}

DefaultPresenter toto:

<?php
namespace FrontModule;
use Nette, Model, Nette\Application\UI\Form;

class DefaultPresenter extends BasePresenter {
}

Router mám takto:

<?php
namespace App;
use Nette, Nette\Application\Routers\RouteList, Nette\Application\Routers\Route;
class RouterFactory {
    /** @return \Nette\Application\IRouter */
    public function createRouter() {
		$router = new RouteList();
		$router[] = new Route('<presenter>/<action>', 'Front:Default:');
        return $router;
    }
}

Výsledek je:

Cannot load presenter 'Front:Default', class 'App\FrontModule\DefaultPresenter' was not found in 'D:\WebServer\www\projekt\app\FrontModule\presenters\DefaultPresenter.php'.

Screen routeru z laděnky vypadá takto.

Info: Apache/2.4.6 (Win32) PHP/5.5.5, Nette Framework 2.1-dev (revision 2855c33 released on 2013–08–28).

Snad jsem dodal všechno, co je potřeba. Díky za pomoc.

EDIT:
Pokud mám router takto:

<?php
namespace App;
use Nette, Nette\Application\Routers\RouteList, Nette\Application\Routers\Route;
class RouterFactory {
    /** @return \Nette\Application\IRouter */
    public function createRouter() {
        $router = new RouteList();
		$router[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
		$router[] = $frontRouter = new RouteList('Front');
        $frontRouter[] = new Route('<presenter>/<action>', 'Default:default');

        return $router;
    }
}

tak chyba je stejná jako výše, ale router screen vypadá už lépe.

Editoval Mysteria (4. 11. 2013 11:27)

Casper
Člen | 253
+
0
-

Nemáš v config.neon defaultní mapování? Tedy toto:

nette:
	application:
		mapping:
			*: App\*Module\*Presenter

V tvém případě bys tam měl mít pouze:

*: *Module\*Presenter
Mysteria
Člen | 797
+
0
-

Casper: Aha, tohle jsem nikde nenašel, pomohlo díky.

Jarek92
Člen | 91
+
0
-

Ahoj, nechci zakládat nové vlákno, tam bych se zeptal tady. Mám router nastavený stejně jako Mysteria. Když mám jen Front modul, tak vše funguje, ale jakmile chci přidat modul Admin na adrese domena/admin, tak mi to vypíše následující chybu:

Nette\Application\BadRequestException #404 → Cannot load presenter ‚Front:Admin‘, class ‚App\FrontModule\Presenters\AdminPresenter‘ was not found in ‚C:\xampp\htdocs\solan\app/FrontModule/presenters/AdminPresenter.php‘.

RouterFactory:

	public function createRouter()
	{
		$router = new RouteList();
$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');

return $router;
	}

Díky za reakci.

Editoval Jarek92 (22. 2. 2014 11:13)

Jarek92
Člen | 91
+
0
-

Ještě bych se chtěl prosím zeptat, jak zabránit tomu, aby když mám dva routy na dva moduly, se při spuštění modulu domena/admin nespouštěl i ten router Front, který je domena/ a nepokoušel se „jakoby najít“ presenter „admin“?

Nyní při spuštění domena/admin mám rout tabulku takto.