Odkazování mezi modely – Access Forbiden
- Dvory59
- Člen | 40
Zdravím, potřeboval bych prosím poradit s odkazováním mezi dvěma modely. Mám strukturu
app/
-model
-models
- Admin
- presenters
- DefaultPresenter.php
- templates
- Default
- default.latte
- @layout.latte
- Front
- presenters
- DefaultPresenter.php
- templates
- Default
- default.latte
- @layout.latte
-presenters
-router
Router mám pak nastavený :
$router = new RouteList;
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Default:default');
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Default:default');
return $router;
A v models/Front/templates/Default/default.latte
mám
odkazy
<a n:href=":Admin:Default:">Admin</a>
<a n:href=":Front:Default:">Front</a>
A k problému. Když otevřu stránku nebo kliknu na odkaz na Front, tak se mi stránka vykreslí, ale když chci přejít odkazem na Admin, tak mi to vyhodí hlášku
Access forbidden!
You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.
If you think this is a server error, please contact the webmaster.
Error 403
V samotných presenterech jsem zatím nic nepřidával, ty jsou prázdné.
Zkoušel jsem se inspirovat jinými projekty, ale je to z mé strany trochu
střílení do neznáma a nevím, jestli vůbec způsob jakým na tuto
problematiku jdu je správný. Mám podezření, že i zobrazení Frontu je
dost možná shoda náhod a tak budu vděčný za jakoukoliv připomínku.
Děkuji!
- David Matějka
- Moderator | 6445
ahoj. jen pro upřesnění, jedná se o moduly. model je oproti tomu vrstva aplikace, kde třeba komunikuješ s databází nebo něco počítáš.
ta chybu vyhazuje apache, jak jej mas nakonfigurovany? jak vypadaji vygenerovane odkazy? funguje ti u frontu nejaky jiny presenter, než default?
- Ondřej Kubíček
- Člen | 494
a máš tam htaccess? jinou stránku na frontendu otevřeš?
mapování v configu máš upravené na models / admin / presenters ?
- Dvory59
- Člen | 40
Zkusil jsem udělat nový presenter ve Frontu se šablonou a
ten otevřu (sice bez funkčních css, ale to zatím není podstatný).
Htaccess jsem neměnil, ty jsem nechal jak jsou v základu
nastavený, jen jsem přidal jeden, který mi přesměrovává automaticky do
www
složky.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ www/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^www/
RewriteRule ^(.*)$ www/$1
</IfModule>
mapování v configu jsem taky neměnil, to mám
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
tam možná bude chyba, ale úplně si nejsem jistý jak by měl vypadat.
Vygenerovaný odkaz konkrétně u toho admina
vypadá http://project/admin
V nastavení appache moc nevím co mám hledat, používám
Xampp a tam jsem si akorát v httpd.conf
měnil DocumentRoot a pak
v httpd-vhosts.conf
jsem si přidal dva VirtualHosty
<VirtualHost *:80>
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1
</Location>
ServerName http://localhost
DocumentRoot "C:\Users\Hugo\Dropbox\programming\php\localhost"
</VirtualHost>
<VirtualHost *:80>
ServerName http://project
DocumentRoot "C:\Users\Hugo\Dropbox\programming\php\localhost\project"
</VirtualHost>
- Dvory59
- Člen | 40
Co jsem teď zjistil, že když v
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Default:default');
nahradím v adrese „admin“ za cokoliv jinýho, třeba
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('test/<presenter>/<action>', 'Default:default');
tak mě to dál pustí.
Nevíte kde se tato situace dá nastavit?