routovani
- radvis
- Začátečník | 110
Ahoj, potřeboval bych udělat url třeba ve tvaru: domena.cz/index.php. Ale já si routy vytvářím:
<?php
$router[] = new Route('domu', array(
'presenter' => 'Home',
'action' => 'default',
));
?>
Problem je v tom, že já potřebuju mít i nadefinované routy a sample routy. Jakým způsobem to můžu udělat? Díky.
- Kenn
- Člen | 110
Pokud jsem tě dobře pochopil, stačí přidat routu.
<?php
$router[] = new Route('index.php', array(
'presenter' => 'Home',
'action' => 'default',
), Route::ONE_WAY);
?>
Jinak doporučuji presenter „Home“ přejmenovat na „Domu“. Nebudeš si pak zasírat routy pro každý presenter jinak pojmenovaný než je jeho URL :-)
- Ondřej Mirtes
- Člen | 1536
Proč bys chtěl dělat tak hnusná PHP-like URL, když můžeš mít
pohodlně neco.cz/hledat/vyraz
?
- Vyki
- Člen | 388
Šlo by to třeba nějak takto:
<?php
$router[] = new Route('hledat/<vyraz>', array(
'presenter' => 'Vyhledavani',
'do' => 'Hledej'
));
?>
EDIT: ještě mě napadlo, že při vyhledávání se to většinou posílá
formulářem takže tam musí být ještě ošetřen parametr do
,
ale netestoval jsem to.
Editoval Vyki (10. 2. 2010 9:37)
- Honza Kuchař
- Člen | 1662
Článek zde: https://doc.nette.org/…tion/routing
Pro příště: na fóru je sekce routování.
- Ondřej Mirtes
- Člen | 1536
A co si na ten Presenter:action vytvořit odkaz v šabloně a vidět, v jakém tvaru se vygeneruje?
- Ondřej Mirtes
- Člen | 1536
Do foreache předáváš NULL namísto něčeho, nad čím se dá iterovat (např. polem). Zkontroluj třeba překlepy v názvech proměnných.
- radvis
- Začátečník | 110
Routa:
<?php
$router[] = new Route('reality/<nazev>', array(
'presenter' => 'Reality',
'action' => 'list',
));
?>
Presenter:
<?php
public function renderList($nazev)
{
$Model = new Model;
$this->template->novinka = $Model->KategorieTitle($nazev)->fetch();
}
?>
Model:
<?php
public function KategorieTitle($nazev)
{
return $this->db->select('*')->from($this->kategorie)->where('nazev=%s', $nazev);
}
?>
Template:
{foreach $novinky as $novinka}
<a href="{plink Novinka:list, $novinka->nazev}">{$novinka->nazev}</a>
{/foreach}
Myslím, že tam překlep nemám.
Editoval radvis (7. 3. 2010 23:04)
- Etch
- Člen | 403
No tak já nevím co ty myslíš, ale po pohledu na kusy kódu co si sem napsal tam překlep rozhodně máš.
Presenter:
$this->template->novinka = $Model->KategorieTitle($nazev)->fetch();
Šablona
{foreach $novinky as $novinka}
<a href="{plink Novinka:list, $novinka->nazev}">{$novinka->nazev}</a>
{/foreach}
v presenteru předáváš data do proměnné $novinka, ale v šabloně do foreach už cpeš $novinky
- pekelnik
- Člen | 462
Stále mám dojem, že radvis nemá ani tucha o OOP – neustále tady zaplňuje forum kravinama.
Tenhle styl „programování“ (čti: opisování kousků kódu) jsem viděl naposledy před deseti lety.
<?php
$this->template->Novinka = $this->KategorieTitle($this->kategorie).... sorry
?>
… nebo hlášky typu nepomáhá ani Var_dump ani array() – to musí už bejt když nepomáhá ani jedna z těchdle věcí ;)
Nechci bejt za supa.
Proto končím dobrou radou: Radvisi, kup si knížku o programování – překousni svou pýchu – uvidíš že nakonec budeš pyšný sám na sebe :)
Editoval pekelnik (8. 3. 2010 11:54)
- 22
- Člen | 1478
jo jo radvis :-) vřele ti doporučuju manuál, na kterej jsem narazil
u Zendu, je tam vše co potřebuješ včetně příkladů, OOP se řeší
tuším v 6 a 7 kapitole.
http://devzone.zend.com/…/view/id/627
- radvis
- Začátečník | 110
Pekelnik:
<?php
$this->template->Novinka = $this->KategorieTitle($this->kategorie).... sorry
?>
Nevím, kde jsi na to přišel ($this->kategorie) to mám v modelu a né v presenteru:) a tím array v závorce jsem myslel to, že var_dump() vrací array a mě to nevypsalo ani prázdný array … Zjístil jsem, že mi ten název dojde až do modelu takže problem je někde v modelu nebo při vypisování.
Etch:
Stejný dotaz, kde jsi vzal ten kód?
$this->KategorieTitle($this->kategorie);
22:
Díky, pročtu.
- Etch
- Člen | 403
To Pekelník uváděl asi jako příklad k tvrzení, že nemáš ani tucha o OOP, protože je to naprosto nesmyslný zápis.
public function actionDefault(){
$this->template->novinka = $this->kategorieTitle($this->kategorie);
}
private function kategorieTitle($kategorie){
return strtolower($kategorie);
}
místo třeba:
public function actionDefault(){
$this->template->novinka = $this->kategorieTitle();
}
private function kategorieTitle(){
return strtolower($this->kategorie);
}
Pokud jde o tvou chybu tak zaprvé fetchAll() zadruhé si tam měl překlep. Pokud si tohle opravil a pořád ti to vrací tuto chybu tak logicky v presenteru místo přiřazení proměnné do šablony dej
debug::dump($model->kategorieTitle($nazev)->fetchAll());
exit;
pokud to nevrací to co by mělo tak tam dej
$model->kategorieTitle($nazev)->test();
exit;
zkontrolovat SQL dotaz. Prostě klasický postup pokud něco nefunguje. Ideální by pro tebe asi bylo sehnat si nějaké IDE s Debugerem a naučit se ho používat.
- radvis
- Začátečník | 110
Etch:
Já pořad nechápu z kama bereš ty kódy, nikde nemam např:
<?php
$this->template->novinka = $this->kategorieTitle($this->kategorie);
?>
Jod:
Kde jsi přišel na to, že na tom vydělávám?:). Ale prostě nevím kde je
chyba řeším to už dlouho a psal jsem: dojde to až do modelu ten nazve kdyz
jsem vypsal treba jen nazve a pod tim ho vypsal (pod selectem) tak to nazev
vypiše, ale na stránku bohužel ne.
- 22
- Člen | 1478
chápe ještě někdo o co jde? Já už ne…radvis, začni na jednoduchých příkladech, tohle je na tebe moc složitý…vyzkoušej si, jak se posílají data na mezi Presenterem<->Šablonou a Presenterm<->Modelem a až ti to bude předávat data křížem krážem na jedné nebo dvou proměnných, tak jsi to pochopil a nebudeš se porád ptat dokola. Základy máš v tutoriálech nebo v příručce programátora..to je pořád dokola.
To jako nestačí pročíst, jak známe tvoji obvyklou hlášku, to si musíš minimálně vyzkoušet, jestli to zvládáš i bez koukání do tutoriálu.
- BigCharlie
- Člen | 283
radvis napsal(a):
Ze začátku byl dotaz ten, jak dám data z šablony do bootstrapu (neco.cz/novinky/nadpis-novinky)
A čo vy si radvis predstavujete pod takýmto úkolom? – omlouvám se za slovenštinu, parafrázuji jednoho majora. Zdá se, že už nemáme jen vymýšlet řešení tvých problémů, ale rovnou si i domýšlet zadání, na které ses chtěl ptát.
Zřejmě začínám radvisovatět – ničemu nerozumím…
- jasir
- Člen | 746
Radvisi, ty se neumíš nebo nebtěžuješ ani pořádně zeptat. Číst tvé nepořádné a zmatené otázky, z nichž u půlky si mají „tví řešitelé“ sami domyslet zadání a napsat ti kód a u druhé půlky ti vysvětlovat smysl chybových hlášek PHP, o objektovém programování ani nemluvě, je utrpení.
Rozhodně to není na žádné hahahaha.
- Etch
- Člen | 403
radvis napsal(a):
Etch:
Já pořad nechápu z kama bereš ty kódy, nikde nemam např:<?php $this->template->novinka = $this->kategorieTitle($this->kategorie); ?>
Jak říkám původně to asi bylo myšleno jako příklad toho jak tvé kódy můžou „vypadat“.
Sorry, ale pokud tu někdo napíše
$this->template->novinka = $Model->KategorieTitle($nazev)->fetch();
a pak
{foreach $novinky as $novinka}
<a href="{plink Novinka:list, $novinka->nazev}">{$novinka->nazev}</a>
{/foreach}
se slovy, že si myslíš, že tam překlep nemáš.
To sou naprosto základní věci. Při práci se mi překlepy stávají 2× do hodiny, kdybych měl každou takovouhle chybu hledat tak dlouho jako ty tak nedělám nic jiného. Radil sem ti dobře pokud ti dělají takovéhle věci problém pořiď si IDE s debugerem.
- radvis
- Začátečník | 110
Už to mám(IDE). Vynechám třeba ; a ono to jednou zaznamená podruhe ne. Psal jsem, že jsem to přepisoval sem na forum jinak to mám dobře. A zjistil jsem, že bude chyba asi v další šabloně (do které to má vypsat), protože jsem si to vypsal z modelu a vypsalo mi to, ale do šablony to nedojde.
Editoval radvis (10. 3. 2010 16:54)
- Etch
- Člen | 403
radvis napsal(a):
Už to mám(IDE). Vynechám třeba ; a ono to jednou zaznamená podruhe ne. Psal jsem, že jsem to přepisoval sem na forum jinak to mám dobře. A zjistil jsem, že bude chyba asi v další šabloně (do které to má vypsat), protože jsem si to vypsal z modelu a vypsalo mi to, ale do šablony to nedojde.
Tak znova. V jaké další šabloně? Pokud ti už původně laděnka řekla, že chyba je jinde tak proč si sem vůbec dával šablonu která je v pořádku a ne tu ve které je chyba?? Asi nepochopím.
A v bodech:
- mít IDE je jedna věc, ale umět ho používat druhá
- radil sem ti aby sis pořídil IDE s debugerem
- ten debuger tam je to hlavní
IDE není o doplňování středníků to je to nejmenší co by tě mělo zrovna tebe zajímat. Měl by zajímat hlavně ten debuger, krokování v kódu a výpisy z debugeru jako sou globální a lokální proměnné. Další věc je, že pokud nedokážeš rozlousknout chybu „Invalid argument passed to foreach resp. SmartCachingIterator; array or Iterator expected, NULL given.“ tak je něco špatně. I kdyby si dal do kódu třeba jen
$this->template->novinky = array(1,2,3);
tak by si tím otestoval jestli se opravdu proměnná $novinky přenese v pořádku do šablony, protože by zmizela výše napsaná chyba. ( Pravděpodobně by sice následovala jiná výjimka, ale to je jedno ) a tak by to mohlo pokračovat dál.
Než začneš psát nějakou aplikaci měl by ses nejdříve naučit porozumět chybám a naučit se je hledat. Bez toho se opravdu nikam nedostaneš.
- radvis
- Začátečník | 110
redhead: Psal jsem, že u mně to mám opravené.
Etch: S tou šablonou se omlouvám, jsem si toho všiml až teď:-X. A jakým
způsobem se je mám naučit? Až teď při pečlivém projíždění examples
jsem přišel na to, že na věčinu věcí jsem měl odpověď přímo pod
nosem. Omlouvám se, měl jsem to pečlivěji projít (někdy jsem ale nevěděl
jak to funguje a to jsem se dozvěděl zde). Zkouším naprogramovat své rs tak
doufám, že se na něm naučím základní věci. K tomu rs bych se jen chtěl
zeptat, zda bude těžké do něj pak dát další jazykové mutace. Díky všem
za trpělivost a budu se sem snažit co nejméně psát:).
- SyXcz
- Člen | 75
radvis napsal(a):
redhead: Psal jsem, že u mně to mám opravené.
Etch: S tou šablonou se omlouvám, jsem si toho všiml až teď:-X. A jakým způsobem se je mám naučit? Až teď při pečlivém projíždění examples jsem přišel na to, že na věčinu věcí jsem měl odpověď přímo pod nosem. Omlouvám se, měl jsem to pečlivěji projít (někdy jsem ale nevěděl jak to funguje a to jsem se dozvěděl zde). Zkouším naprogramovat své rs tak doufám, že se na něm naučím základní věci. K tomu rs bych se jen chtěl zeptat, zda bude těžké do něj pak dát další jazykové mutace. Díky všem za trpělivost a budu se sem snažit co nejméně psát:).
a neměl bys na to spíš založit nový téma? co když pak přijde někdo, kdo bude mít podobnej problém? tohle už docela s routováním nemá nic společnýho, tohle už jsou šablony, resp. presentery který šabloně předávají data