Rozdělení do modulů Nette 2.1.2 [Vyřešeno]

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

Ahoj.

Potřeboval bych radu, ve výše uvedené verzi Nette mi nejde pracovat s moduly. Pročetl jsem si pár podobných témat, ale nic z toho nepomohlo.

Adresářová struktura

app/
--/FrontModule
------/presenters
------/templates
--/AdminModule
------/presenters
------/templates

Homepage presenter pro FrontModule

<?php

namespace App\FrontModule;

/**
 * Homepage presenter.
 */
class HomepagePresenter extends \App\FrontModule\BasePresenter
{

	public function renderDefault()
	{
		$this->template->anyVariable = 'any value';
	}

}

Router

<?php

namespace App;

use Nette,
    Nette\Application\Routers\RouteList,
    Nette\Application\Routers\Route,
    Nette\Application\Routers\SimpleRouter;

/**
 * Router factory.
 */
class RouterFactory {

    /**
     * @return \Nette\Application\IRouter
     */
    public function createRouter() {
        $router = new RouteList();

        $router[] = new Route('admin/<presenter>/<action>/<id>', array(
            'module' => 'admin',
            'presenter' => 'Main',
            'action' => 'default',
            'id' => NULL,
        ));

        // Add general route
        $router[] = new Route('<presenter>/<action>/<id>', array(
            'module' => 'Front',
            'presenter' => 'Homepage',
            'action' => 'default',
            'id' => NULL,
        ));

        return $router;
    }

}

Error:
Cannot load presenter ‚Front:Homepage‘, class ‚App\FrontModule\Presenters\HomepagePresenter‘ was not found in ‚cesta k webu\app/FrontModule/presenters/HomepagePresenter.php‘

Nicméně presenter existuje, nejspíš to souvisí s Namespace ale nevím si rady.S moduly jsem dřív pracoval, a nikdy nebyl problém.

Je to projekt, který jsem vytvořil přes composer.

Díky za rady nebo odkaz.

Editoval Dawerx (21. 4. 2014 16:10)

Šaman
Člen | 2659
+
0
-

Předpokládám, že adresář APP nemáš velkými písmeny, jak uvádíš v příspěvku? A adresář Front Module že máš bez mezery.

Dawerx
Člen | 9
+
0
-

Šaman napsal(a):

Předpokládám, že adresář APP nemáš velkými písmeny, jak uvádíš v příspěvku? A adresář Front Module že máš bez mezery.

Přesně tak, opravím to v příspěvku:-)

Editoval Dawerx (21. 4. 2014 15:40)

Tomáš Votruba
Moderator | 1114
+
0
-

@Dawerx: Presenter opravdu neexistuje. Je potřeba číst pozorně a porovnávat názvy doslova. (Mně pomáhá označit požadovanou cestu ctrl+c a ctrl+f v seznamu souborů.)

namespace App\FrontModule;

class HomepagePresenter extends \App\FrontModule\BasePresenter

Oprav na

namespace App\FrontModule\Presenters;

class HomepagePresenter extends \App\FrontModule\BasePresenter

Editoval Tomáš Votruba (21. 4. 2014 16:01)

Dawerx
Člen | 9
+
0
-

Ježiši, díky moc, věděl jsem, že to zase bude nějaká prkotina. Nejspíš by mi to ale samotnému nedošlo :-)))
Ještě jednou děkuji.