znovu ta nedoresena 404 + mala podotazka ohledne odkazu
- minovec
- Člen | 6
Dobry den,
vim ze se to tady jiz resilo, ale defakto se k nicemu nedopracovalo.
Jde o vyhazovani hlasky 404 po kliknuti na odkaz. Podotazka je, jak udelam v menu prazdne odkazy? odkaz null mi haze „Error: destination mut be non-empty string.“
mod_rewrite mam povolen v .httacess
a zde je problemovej kod (castecne jsem vychazel tady s kucharek, jedna se o staticky web.)
default.latte
{block menu}
<ul id="main-nav" n:inner-foreach="$menuItems as $item => $arguments">
<li>
<a n:href="$arguments['Link']" class="nav-top-item {!$arguments['Submenu']?'':'no-submenu'} {ifCurrent Default:*}current{/ifCurrent}">{$item}</a>
<ul n:if="$arguments['Submenu']">
{foreach $arguments['SubmenuItems'] as $name => $link}
<li><a n:href="$link">{$name}</a></li>
{/foreach}
</ul>
</li>
</ul>
{/block}
BasePresenter.php
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
public function beforeRender()
{
parent::beforeRender(); // nezapomeňte volat metodu předka, stejně jako u startup()
$this->template->menuItems = array(
'Domu' => array('Link'=>'Homepage:default','Submenu'=>False,
'SubmenuItems'=>array(),
),
'Menu1' => array('Link'=>null,'Submenu'=>True,
'SubmenuItems'=>array(
'Submenu11'=>'Produkty:Site',
'Submenu12'=>'Produkty:Sowtware',
'Submenu13'=>'Produkty:Security',
),
),
'Menu2' => array('Link'=>null,'Submenu'=>True,
'SubmenuItems'=>array(
'Submenu21'=>'',
'Submenu22'=>'',
),
);
}
ProduktyPresenter.php
class ProduktyPresenter extends BasePresenter
{
public function __construct()
{
}
public function beforeRender()
{
}
public function renderConnection()
{
}
}
Site.latte
Test
Adresarova struktura
app
- config
- ...
- model
- ...
- presenters
- BasePresenter.php
- ...
- HomepatePresenter.php
- ProduktyPresenter.php
- ...
- router
- ...
- templates
- ....
- Homepage
- default.latte
- Produkty
- Site.latte
- ...
- ...
log
- ...
temp
- ...
tests
- ...
vendor
- ...
www
- ...
...
Editoval minovec (29. 12. 2013 13:27)
- minovec
- Člen | 6
iNviNho napsal(a):
A takíto link by ti fungoval?
<?php <a n:href="Homepage:default">TU</a> alebo <a n:href="Produkty:site">TU</a> ?>
<a n:href=„Homepage:default“>TU</a>
toto funguje
<a n:href=„Produkty:site“>TU</a>
toto nikoli, hodi mi to adresu
http://xxx.xxx.xxx.xxx/web/www/produkty/site
a zakonci to chybou 404
Editoval minovec (29. 12. 2013 16:57)
- minovec
- Člen | 6
minovec napsal(a):
Aurielle napsal(a):
Nedělej to přes n:href, ale opodmínkuj to a použij klasický
{link}
nebo{plink}
.k {link} jsem jeste nedospel, musim nastudovat jak vlastne funguje. V kazdem pripade i kdyz se hram s nette teprve druhej den, tak jsem si n:makra celkem zamiloval
takze {link} mi udelal tu samou konstrukci jako n:href
<li><a href="{link Produkty:site}">{$name}</a></li>
vygeneruje to odkaz
<li><a href="/web/www/produkty/site">Site</a></li>
pricemz po kliknuti na odkaz se ukazze porad 404 stranka
uz jsem docela v koncech, na zacatku jsem mel hodne nadeji ze jsem narazil na
supr framework, ktery je navic v profesnich kruzich hodne zadany, ale porad
narazim na problemy, ktere doufam prameni jenom s me neznalosti, ale todlecto
je myslim celkem klicove a neumim s tym hnout
- Oli
- Člen | 1215
minovec napsal(a):
<li><a href="{link Produkty:site}">{$name}</a></li> vygeneruje to odkaz <li><a href="/web/www/produkty/site">Site</a></li>
Ty očekáváš něco jinýho? A co přesně myslíš tím prázdným
odkazem? Jestli odkaz, co nikam nevede, tak co takhle udělat odkaz
<a href="">nikam nevedu</a>
, to by taky nepomohlo?
- Myiyk
- Člen | 321
Jako prázdný odkaz je asi ideální dávat
<a href="#">odkaz</a>
kdyby tam bylo jen "", nebudou fungovat některé pseudotřídy u css
jestli myslíš prázdný odkaz, jako odkaz sám na sebe
<a n:href="this">odkaz</a>
Obojí tě po kliknutí nechá na stejné stránce, ale ten prví ti přídá
do adresy #
Prázdný odkaz nedává smysl, buď někam odkazuješ, nebo ne.
Editoval Myiyk (29. 12. 2013 19:26)
- David Matějka
- Moderator | 6445
a ta 404 je od nette nebo od apache?
jestli od apache, zkus nastavit v .htaccess spravny RewriteBase,v tvem
pripade asi
RewriteBase /web/www
- minovec
- Člen | 6
matej21 napsal(a):
a ta 404 je od nette nebo od apache?
jestli od apache, zkus nastavit v .htaccess spravny RewriteBase,v tvem pripade asiRewriteBase /web/www
asi to bude predci jenom tym apache, jsem si to vubec neuvedomil… akorat ze zkousim ruzne kombinace cest na ten RewriteBase a nic mi nefunguje..... nemate nahodou typ jak zjistit tu cestu ? (vim ze je to uz mimo nette, ale mozna to taky nekomu pomuze)
- s4muel
- Člen | 92
mas to na svojom serveri? ak hej, tak poztri nastavenie apache pre ten
web.
(...httpd.conf
alebo ...sites-available/default
resp.
podla systemu)
pre nastavenie relevantnej <Directory>
tam musis mat
AllowOverride All
http://httpd.apache.org/…od/core.html#…
pripadne este skus RewriteBase /web/www/
(aj s lomkou
na konci)