Rozdělení aplikace na Front a Back
- Rndoom04
- Člen | 75
Ahoj všichni. :)
Doteď jsem dělal malé projekty, proto nebylo potřeba aplikaci rozdělovat. Ale nyní už je to jiné. vytvořil jsem přes composer novou aplikaci a nyní ji rozděluji. Rozdělení mám takto: Adresářová struktura
Ten BasePresenter.php mám takto mimo z důvodu, že budu stejný používat pro front i back. V něm mám:
<?php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
public function startup() {
parent::startup();
dump("Base presenter");
}
}
Ve Frontu v Homepage presenteru mám:
<?php
declare(strict_types=1);
namespace App\Presenters\FrontModule;
use App\Presenters\BasePresenter as BasePresenter;
use Nette;
final class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
dump("HomepagePresenter");
}
}
Mapování takto:
application:
errorPresenter: Error
mapping:
*: App\Presenters\*Module\*Presenter
a router takto:
final class RouterFactory
{
use Nette\StaticClass;
public static function createRouter(): RouteList
{
/*$router = new RouteList;
$router->addRoute('FrontModule/<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;*/
$router = new RouteList();
$router[] = $admin = new RouteList('Back');
$admin->addRoute('admin/<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = $front = new RouteList('Front');
$front->addRoute('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
}
Vše mi funguje. Jak Front, tak Back. Aplikace hodí oba dumpy, jak předpokládám a načte správné latte. Ale. V HomepagePresenteru mi to ukazuje Chyba v HomepagePresenter
Pokud změním v HomepagePresenteru final na abstract, chybu to neukazuje, ale aplikace hází chybu:
Cannot load presenter 'Front:Homepage', class 'App\Presenters\FrontModule\HomepagePresenter' is abstract.
Pokud přehodím
namespace App\Presenters\FrontModule;
use App\Presenters\BasePresenter as BasePresenter;
na
use App\Presenters\BasePresenter as BasePresenter;
namespace App\Presenters\FrontModule;
Netbeans chybu neukazuje, ale aplikace hlásí:
Class 'App\Presenters\FrontModule\BasePresenter' not found
Kde mohu prosím dělat chybu? Ve standardní podobě aplikace funguje, jen Netbeans hlásí, že chce funkci mít abstract a ne final. Jenže abstract už je BasePresenter. Děkuji všem za pomoc. :)
Editoval Rndoom04 (8. 6. 2020 16:01)
- David Matějka
- Moderator | 6445
jestli tu chybu hlásí jen netbeans a ne php během runtime, tak je to pravděpodobně chyba v netbeans
- Kamil Valenta
- Člen | 822
Z čeho dědí ten BasePresenter?
Někde tam bude závislost na ArrayHash. Což je podivné…
- Rndoom04
- Člen | 75
David Matějka napsal(a):
jestli tu chybu hlásí jen netbeans a ne php během runtime, tak je to pravděpodobně chyba v netbeans
Děkuji za odpověď. Chybu hlásí asi opravdu jen Netbeans. V logu nic není ani při vypnuté laděnce.
kamil_v napsal(a):
Z čeho dědí ten BasePresenter?
Někde tam bude závislost na ArrayHash. Což je podivné…
Také děkuji za odpověď. BasePresenter je abstract a dědí pouze z Nette\Application\UI\Presenter ve kterém jsem nic nedělal. Dokonce BasePresenter žádnou chybu nehlásí ani v Netbeansu.