znovu ta nedoresena 404 + mala podotazka ohledne odkazu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
minovec
Člen | 6
+
0
-

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)

iNviNho
Člen | 352
+
0
-

A takíto link by ti fungoval?

<?php
<a n:href="Homepage:default">TU</a>

alebo

<a n:href="Produkty:site">TU</a>
?>
Aurielle
Člen | 1281
+
0
-

Nedělej to přes n:href, ale opodmínkuj to a použij klasický {link} nebo {plink}.

minovec
Člen | 6
+
0
-

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
+
0
-

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

minovec
Člen | 6
+
0
-

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
+
0
-

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
+
0
-

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)

iNviNho
Člen | 352
+
0
-

Máš potom chybu v templates … premenuj Site.latte ⇒ site.latte a skús teraz

minovec
Člen | 6
+
0
-

iNviNho napsal(a):

Máš potom chybu v templates … premenuj Site.latte ⇒ site.latte a skús teraz

No to jsem taky zkousel. momentalne mam prejmenovane takhle

Produkty/site.latte

zkousel jsem i

Produkty/Site.latte

a nepomohlo

David Matějka
Moderator | 6445
+
0
-

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
Aurielle
Člen | 1281
+
0
-

Makro n:href je funkčně identické s {link}. A myslel jsem to tak, že se podíváš, jestli není tvá proměnná NULL, v tom případě vygeneruješ přes {link} odkaz, jinak vypíšeš #.

minovec
Člen | 6
+
0
-

matej21 napsal(a):

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

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
+
0
-

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)