problém s odkazy
- vmartin
- Člen | 18
Dobrý den, s Nette teprve začínám, ale v diskuzi jsem můj problém nenašel.
Po dvou dnech procházení diskuzí a tutoriálů se mi povedlo připojit k mysql databázi a zobrazovat z ní data.
Teď řeším problém routeru. Snažil jsem se z akrabatu pochopit, jak to vše pracuje. Chápu, že nastavuji presenter a v něm určitou akci. Ale jak Nette pozná, jaký template na to použít?
jde mi o tento odkaz: <p><a href=„{link add}“>Add new
album</a></p>
odkaz v prohlížeči na localhost je potom …root/Dashboard/add.
já používám defaultPresenter, kde mám také Add. Template používám
default.default.phtml (všiml jsem si, že to je stejné jako adresář default
a v něm temlate default.phtml, což mě trochu překvapilo), ale na jaké
místo mám vytvořit add.phtml? tam, co je default, nebo na to vytvořit jiný
adresář?
Snad je můj dotaz srozumitelný. Doposud jsem s frameworkem nedělal, vše
jsem měl v čistém php, tak jsem zmaten :-)
Editoval vmartin (22. 8. 2009 0:42)
- Foowie
- Člen | 269
V ukázkovém projektu CD-collection je následující routa:
což znamená: Výsledná www adresa bude mít tvar JMÉNO_PRESENTERU/JMÉNO_ACTION/HODNOTA_ID. Dále je jako druhý parametr pole, který obsahuje defaultní hodnoty. Pokud bude v požadavku stejná hodnota jako defaultní, nebude v uri zobrazena. (Takže pokud bude presenter „Abc“, action „default“ a id bude „null“ bude výsledná adresa …document_root/Abc/
Výsledný template se potom hledá jako
templates/JMÉNO_PRESENTERU/JMÉNO_AKCE.phtml
, nebo
/templates/JMÉNO_PRESENTERU.JMÉNO_AKCE.phtml
(pokud
nepoužíváš moduly)
<p><a href=„{link add}“>Add new album</a></p>
(spíše asi plink – ten se používá k odkazování v presenteru/na
presenter, link k odkazování v komponentě/na komponentu)
{link add}
znamená: „Vem aktuální adresu a změň action na
add“. Pokud by tam bylo {link Clanek:add, 5}
znamenalo by to "Vem
aktuální adresu a změň presenter na článek, action na add a první
parametr metody actionAdd
bude mít hodnotu 5. (V tomhle
případě budou smazány i persistentní parametry, teda pokud ty parametry
nejsou definované v předkovi současného a Clanek presenteru)
- vmartin
- Člen | 18
asi si budete klepat na čelo, ale stále to nemůžu rozeběhnout…
vytvořil jsem si strukturu stejně, jako napsal Etch.
bootstrap mám takto:
v templates mám @layout.phtml
ten v body má:
default.phtml potom obsahuje:
základ se mi zobrazí, ale v posledním řádku, ať už mám link, nebo
plink, stále to hlásí chybu, že
je objekt nenalezen.
Vypsanná adresa je localhost/document_root/default/add/.
Vidíte tam, prosím, někdo chybu? ze začátku mi jde o to při odkazu zobrazit pouhý text, ale nikdy se nedokážu dostat na jiný template.
Děkuji za každý postřeh.
Edit: code fix
Editoval kravčo (22. 8. 2009 19:03)
- vmartin
- Člen | 18
snad už to je poslední problém s odkazy.
Mám tento odkaz: <a href=„{plink default:souteze, $sport->sport}“ >
ten mi funguje, ale jak předá dva argumenty?
zkoušel jsem tohle:
<a href=„{plink default:souteze, $sport->id, $sport->sport}“ >
ale chce to pole, do kterého jsem se to sice pokoušel dát, ale marně.
Děkuji všem za pomoc.
- Oggy
- Člen | 306
takový dotaz
šablona:
$zalozka->url je nějaká url z databáze ..např. kontakt
má to být presenter…ale takto je to chápáno jak action stávajícho
presenteru..to je celkem jasné..ale jak docílit toho, aby to byl presenter?
dvojtečku za $zalozka->url_cs ..jak jí tam dostanu?.. pokud napíši
je to syntaktická chyba..
díky
- Oggy
- Člen | 306
Panda napsal(a):
Výraz nesmí začínat znakem $, jinak jej Nette považuje celý za PHP kód. Je potřeba tedy zapsat celou cestu k presenteru:
díky super..
P.S. jak vlastně funguje generování odkazu?…
v tomto případě, který jsem tu řešili.. například..stránka O nás
(url= o-nas) ..to hází chybu..že presentername musí být alphanumeric..
jde mi o to..že podle té url (o-nas) se potom podívám buďto v routeru
nebo ve stylu pro router (ale to je asi na řešení do jiného vlákna) jaký
presenter má tuto url obsloužit..