Nechce načíst HomePresenter v AdminModule
- emmil
- Člen | 26
Našel jsem to tady asi 10× ve foru, vyzkušel jsem různé varianty, ale prostě mi to pořád hlásí chybu:
Cannot load presenter 'Admin:Homepage', class 'App\AdminModule\Presenters\HomepagePresenter' was not found.
Adresářová struktura je:
app/
AdminModule/ <-- Obsahuje presentery pro admina
presenters/
HomepagePresenter.php
BasePresenter.php
templates/
presenters/ <-- Obsahuje presentery pro veřejnost (přímo v adresáři app)
HomepagePresenter.php
BasePresenter.php
templates/
Homepage presenter v adminovi vypadá takto:
<?php
namespace AdminModule;
use Nette;
use App\Model;
class HomepagePresenter extends BasePresenter
{
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function renderDefault()
{
}
}
A BasePresenter v adminovi takto:
<?php
namespace AdminModule;
use Nette;
use App\Model;
/**
* Base presenter for all application presenters.
*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $locale;
/** @var \Kdyby\Translation\Translator @inject */
public $translator;
}
Routování takto:
<?php
namespace App;
use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;
class RouterFactory
{
/**
* @return Nette\Application\IRouter
*/
public static function createRouter()
{
$router = new RouteList;
$admin = new RouteList('Admin');
$admin[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = $admin;
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
}
Domovská stránka jede úplně v pořádku, chyba nastane, když jdu do odkazu /admin
Mimochodem, zkoušel jsem i promazat temp.
Editoval emmil (8. 1. 2016 16:29)
- David Matějka
- Moderator | 6445
prevod nazvu presenteru na tridu se resi pomoci mapovani, v sandboxu a web-projectu je upraveny na tohle a proto to hleda ten presenter jinde, nez ho mas. Takze bud prepis namespace u presenteru, aby korespondoval s mapovanim, nebo mapovani uprav asi nasledovne:
mapping:
*: *Module\*Presenter
a takhle myslim vypada defaultni mapovani, takze by melo stacit to uplne smazat :)
jeste to neni mergnuty do dokumentace, ale dalsi info najdes tady: https://github.com/…senters.texy#…
- emmil
- Člen | 26
Prvně mockrát díky za extrémně rychlou reakci. Za druhé, přepsání mappingu na tebou navrhované řešení funguje skvěle.
Takže díky moc! Už mě z toho bolela hlava.
EDIT: Funguje to skvěle pro AdminModule, ale pro ty presentery, které jsou přímo ve složce app to už háže chybu. Takže jsem akorát ty veřejné presentery přehodil do FrontModule a přepsal routing a zase to krásně funguje.
Editoval emmil (8. 1. 2016 16:47)