Problém s routami u submodulu
- darkwind
- Člen | 32
Ahoj,
o tomhle tu padlo už dost, ale nějak se v tom nemůžu vyznat, v těch
routách se plácám.
Zkouším modulární aplikaci s modulama a v bootstrap.php mám definováno:
$container->router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('administrace/helloworld/<presenter>/<action>', array(
'module' => 'Helloworld',
'presenter' => 'Show',
'action' => 'default'
));
$adminRouter[] = new Route('administrace/<presenter>/<action>', 'Dashboard:default');
Strukturu mám takovouto:
--AdminModule
---presenters
---templates
---HelloworldModule
----presenters
-----ShowPresenter.php
----templates
-----Show.default.latte
V ShowPresenter.php mám:
<?php
namespace AdminModule;
class ShowPresenter extends DashboardPresenter {
public function renderDefault() {
$this->template->value = "Hello World!";
}
}
V podstatě to má udělat jen to, že to vypíše Hello World pomocí
šablony, nic víc.
Ale laděnka mi vypisuje:
Cannot load presenter 'Admin:Helloworld:Show', class 'AdminModule\HelloworldModule\ShowPresenter' was not found in '/var/www/clients/client359/web529/web/devel_new/toman/nette/app/AdminModule/HelloworldModule/presenters/ShowPresenter.php'
Co dělám špatně?
Editoval darkwind (21. 5. 2012 20:24)
- darkwind
- Člen | 32
Aha, děkuji. Upravil jsem ShowPresenter.php takto:
<?php
namespace AdminModule\HelloworldModule;
class ShowPresenter extends \AdminModule\DashboardPresenter {
public function renderDefault() {
$this->template->value = "Hello World!";
}
}
… a vypadá, že to už aspoň zobrazuje, co má :-)
Jak se ale potom v šabloně @layout.latte, ve které bych chtěl
umístit odkaz do tohoto submodulu, napat n:href?
Mám to takto absolutně, ale to nefunguje.
<a n:href=":Admin:Helloworld:show">Hello World</a>
Do hrefu to vygeneruje toto:
error: Cannot load presenter 'Admin:Helloworld', class 'AdminModule\HelloworldPresenter' was not found in '/var/www/clients/client359/web529/web/devel_new/toman/nette/app/AdminModule/presenters/HelloworldPresenter.php'.
Takže chápu asi dobře, že to chce odkazovat na Presenter a ne na modul. Ale jak to tedy nalinkuju na modul?
- castamir
- Člen | 629
chceš modul Admin submodul Helloworld presenter Show action pravdepodobne
default (default.latte)
tj.
<a n:href=":Admin:Helloworld:Show:default">Hello World</a>
resp. tohle bych asi zkusil já, ale netestoval jsem to…
Ale moc se mi nelíbí ty tvé routy, zkusím mrknout, jak jsem vyřešil routy v jednom starším projektu…
Editoval castamir (21. 5. 2012 19:33)
- David Matějka
- Moderator | 6445
nevim, proc to pises to vlakna, ktery s tim vubec nesouvisi..
koukni do dokumentace https://doc.nette.org/…tion/routing
konkretne na Transformace
a preklady a Masky –
budes muset zmenit FILTER_IN, FILTER_OUT a PATTERN pro presenter. jak je to
nastaveny defaultne muzes videt zde