implementace AdminModule – problem s MultiRoute asi
- muflix
- Člen | 92
Dobrý den, snažím se pro svojí testovací aplikaci vytvořit
administraci.
Podle ukázky z
NetteFramework-2.0dev-PHP5.3\examples\Modules-Usage
jsem si přidal do bootstrap.php
use Nette\Application\MultiRouter;
/* AdminModule */
$router[] = $adminRouter = new MultiRouter('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Default:default');
(to proto aby mi fungovala url ve tvaru test.dev/Admin )
dále jsem vytvořil tyto soubory
app/AdminModule/
app/AdminModule/presenters/
app/AdminModule/presenters/AuthPresenter.php
app/AdminModule/presenters/BasePresenter.php
app/AdminModule/presenters/DefaultPresenter.php
app/AdminModule/templates/
app/AdminModule/templates/Auth/
app/AdminModule/templates/Auth/default.latte
app/AdminModule/templates/@layout.latte
app/AdminModule/templates/Default.default.latte
libs/acl/security/acl.php
nerozumím formátu souboru Default.default.latte
, proč je
pojmenovaný zrovna takto.
a potom soubor acl.php
by asi klidně mohl být v AdminModule/ a
bylo by to i logické?!
ve složce security/ by to asi také být zanořeno nemuselo, ale možná
k tomu dospěju časem proč tomu tak je.
Obsah presenterů mám podobný dle návodu staticke ACL ikdyž malinko jsem si to upravil podle sebe.
Netvořil jsem třídu LoginForm, ale form sem vložil rovnou do třídy AuthPresenter, zatím se to snažím dělat co nejjednodušší, hlavně to rozchodit a ladit to mohu potom.
Potom využívám předpřipravenou třídu ze sandboxu
app/models/UsersModel.php
je mnohem jednodušší, dělá prakticky to samé a hlavně když už tam je
tak proč jí přepisovat.
Teď bych očekával, že pod
test.dev/Admin
se načte @layout.latte a do ní se includne Default.default.latte nebo
Auth/default.latte?!To se uvidí:p
nicméně když zadám test.dev/Admin tak mi vyskočí debugger
Nette\Application\BadRequestException #404
Cannot load presenter 'Admin', class 'AdminPresenter' was not found in 'C:\web\www\test.dev\www/../app/presenters/AdminPresenter.php'.
to znamená, že mi pravděpodobně nějak nezafungoval ten MultiRouter ze začátku a snaží se to najít AdminPresenter.php, který tam samozřejmě není.
Proto prosím nevíte jak to upravit? Děkuji.
- Jan Tvrdík
- Nette guru | 2595
- U route závisí na pořadí. To, co jsi do bootstrapu přidal mělo přijít nad tu routu, která tam je výchozí.
Default.default.latte
→ Presenterdefault
, akce (⇒ pohled)default
.