úprava cesty do template složky v url
- muflix
- Člen | 92
Dobrý den, mám verzi PHP5.3 a Nette2.0
Na své administrační stránce
http://test.dev/admin/
se mi načte template
app/AdminModule/templates/Default/default.latte
<a href="{plink InzeratyEdit}">inzeráty</a>
po kliknutí na odkaz mě to přesměruje na url:
test.dev/admin/default/inzeraty-edit
a vyhodí chybu
Nette\Application\BadRequestException #404
Page not found. Missing template '…/AdminModule/templates/Default/inzeratyEdit.latte'.
můj presenter vypadá takto
app/AdminModule/presenters/InzeratyEditPresenter.php
<?php
class InzeratyEditPresenter extends BasePresenter {
}
a přiřazený template
app/AdminModule/templates/InzeratyEdit/default.latte
{block content}
editace inzeratu...
bootstrap.php
$router = $application->getRouter();
$router[] = $adminRouter = new MultiRouter('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Default:default');
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
šlo by nějak upravit, pravděpodobně routování v bootstrap.php, abych nemusel mít všechny administrační šablony v Default/ složce, ale ve složkách pojmenovaných po svém presenteru ?
a druhá otázka.. je to dobrý nápad? Podle mě, ikdyž tam bude více složek tak to bude jednodušší na zorientování zvlášť, když frontend je řešený podobným způsobem. Děkuji
- dakota
- Člen | 148
Správne by si mal použiť:
<a href="{link InzeratyEdit:}">inzeráty</a>
prípadne
<a href="{link :Admin:InzeratyEdit:}">inzeráty</a>
dokumentácia – https://doc.nette.org/…n/presenters
Editoval dakota (22. 2. 2011 15:23)
- muflix
- Člen | 92
Aha děkuju, ale pokuď přidám
<a href="{link InzeratyEdit}">inzeráty</a>
tak to odkazuje stejně jako plink
a pokuď tam dám
<a href="{link InzeratyEdit:}">inzeráty</a>
tak mi to vyhodí chybu
Ambiguous class 'Acl\Security\Acl' resolution; defined in C:\web\www\test.dev\libs\Acl\Security\Acl.php and in C:\web\www\test.dev\libs\acl\security\acl.php.
tak nevim?:x
edit: aha.. tak nefunguje ani
<a href="{link :Admin:InzeratyEdit:}">inzeráty</a>
edit2:
v acl.php mam
<?php
namespace Acl\Security;
use Nette\Security\Permission;
class Acl extends Permission
{
public function __construct()
{
// roles
$this->addRole('guest');
$this->addRole('member', 'guest');
$this->addRole('editor', 'member');
$this->addRole('admin');
// resources
$this->addResource('Admin:Default');
$this->addResource('Admin:Page');
$this->addResource('Admin:User');
// privileges
$this->allow('member', 'Admin:Default', Permission::ALL);
$this->allow('editor', 'Admin:Page', Permission::ALL);
$this->allow('admin', Permission::ALL, Permission::ALL);
}
}
a za admina jsem přihlášen, takže práva bych měl mít.
edit3:
přidal jsem do acl.php ještě
$this->addResource('Admin:InzeratyEdit');
ale nepomohlo to.
Editoval muflix (22. 2. 2011 15:37)
- jasir
- Člen | 746
muflix napsal(a):
a pokuď tam dám
<a href="{link InzeratyEdit:}">inzeráty</a>
tak mi to vyhodí chybu
Ambiguous class 'Acl\Security\Acl' resolution; defined in C:\web\www\test.dev\libs\Acl\Security\Acl.php and in C:\web\www\test.dev\libs\acl\security\acl.php.
dakota radí správně. Smaž si adresář acl nebo Acl, máš to tam 2×.
Editoval jasir (22. 2. 2011 15:43)
- muflix
- Člen | 92
měl jsem tam
Acl/Security/Acl.php
žádná jiná složka či soubor tam nebyl.
nicméně jsem to přejmenoval na
AclSets/Security/Acl.php
a upravil jsem config.ini
service.Nette-Security-IAuthorizator = AclSets\Security\Acl
service.Nette-Security-IAuthenticator = UsersModel
potom soubor acl.php
namespace AclSets\Security;
a promazal cache složku
a chyba už zmizela..
v odkaz na inzerát se mi, ale do href tagu vygenerovalo
error: Cannot load presenter 'Admin:InzeratyEdit', class 'AdminModule\InzeratyEditPresenter' was not found in 'C:\web\www\test.dev\www/../app/AdminModule/presenters/InzeratyEditPresenter.php'.
přitom tam, ale
app/AdminModule/presenters/InzeratyEditPresenter.php mám
<?php
class InzeratyEditPresenter extends BasePresenter {
}