nette komponenta s vice metodami render
- Cup
- Člen | 38
Ahoj,
Nasel jsem tady na tuto otazku vice odpovedi, ale kazda byla jina. Chtel bych se
zeptat jake je aktualni reseni problemu.
Jedna se o to, ze budu mit jednu komponentu, a ta bude mit vice metod render. Napriklad klasicky render pouziju pro navstevnika webu. renderAdmin() pro zobrazeni informaci o komponente povolane osobe atd.
Diky za opoved.
- Marek Šneberger
- Člen | 130
No a otázka zní? Jestli se ptáš na to, jestli komponenta může mít víc
render metod tak ano. {control komponenta}
zavolá render(),
{control komponenta:admin}
zavolá renderAdmin()
v dané komponentě.
//Edit @DavidMatějka díky, opravil jsem :-)
Editoval Marek Šneberger (28. 2. 2015 10:11)
- David Matějka
- Moderator | 6445
jen upresnim, {control komponenta}
zavola metodu
render
, ne renderDefault
Ale pri pouziti pohledu komponent mej na pameti, ze se (mimojine) nekamaradeji s ajaxem. Ja jejich pouziti prilis nedoporucuju.
A co tedy pouzit? Ve vetsine pripadu o tom, jak se komponenta ma vykreslit, vis uz v presenteru. Takze v tovarnicce rovnou nastavis parametry komponenty
protected function createComponentFoo()
{
$foo = new FooControl();
$foo->setView('bar');
return $foo;
}
komponenta pak akorat v render metode nastavi spravnou sablonu.
Ale v tvem pripade bych premyslel, zda nebude lepsi vytvorit dve komponenty – jednu public, jednu pro admina.
- Cup
- Člen | 38
Je diky.
No nejakym zpusobem se mi to povedlo, ajax jsem jeste neresil.
Co kdybych ale mel v te komponente s view pro admina nejaky formular. Tak
nejak sem hledal, ze se mi nepovede odeslat vysledky tohoto formulare metode do
teto komponenty. Ale pokousi se to odchytit presenter, kde se komponenta
vytvari. Teda tak to chapu. Je to docela nemile. Mel jsem predstavu ze v tom
rozhranni pro admina budu pouzivat napriklad prave formular s upravou nastaveni
v db, podle ktereho se nasledne bude vykreslovat ten klasickej view.
Do presenteru se mi to nechce davat, z toho duvodu, ze komponent muze byt 50 ruznejch, v nich 50 ruznejch formularu a ja bych rad upravoval vzdy pouze kod te komponenty, ne presenteru.
Asi nerealizovatelne co?
- Marek Šneberger
- Člen | 130
Vytváření komponenty v action? Whaaaaaat? To zní jako průser, můžeš ukázat kód? Form by měl být ve vlastní továrničce v té komponentě…
- Cup
- Člen | 38
haha, jo mozna je to pruser. Je to vsechno zatim v ramci pokusu. Nevim jesli to bude fungovat.
Jde o to, ze se pokousim komponenty vytvaret dynamicky, v db mam ulozenen na jake strance jsou jake komponenty a v pripade ze na te strance jsem, tak se v nejakem miste komponenty vytvori … tedy nemam pro 10 stránek, 10 presenterů kde v každém je nějaká továrnička na právě umístěnou komponentu. Mám jeden presenter. Neříkám, že je to dobře. Možná je to úplná blbost a celé to skončí neúspěchem. Jen se snažím nette přiohnout k takovému pokusu. A zatím se mi to celkem daří.
Kdybych měl továrničky, tak to bude fungovat. Ale musel bych je do presenteru dopředu napsat. Já nevím co kde na jaké stránce mám a vlastně ani jaké stránky tam jsou, je to v db.
Přiznávám že jsem neřešil bezpečnost. Ale nemyslím si, že tam dělám nějaké obrovské prasárny. :) Možná se to jen snažím používat jinak, než je Nette navrženo a shořím jako papír ve chvíli kdy se budu snažit něco z ajaxovat.
Čerpám ze zkušeností z BP, kde jsem vytvářel filter (dnes loader) pro xhtml šablonování.
V této době nemůžu zveřejnit zdrojáky. Ale pokusím se to domluvit. Třeba by se to někomu hodilo.
--edit–
psal jsem k továrničkám na komponenty.
továrnička na vlastní form je v té komponentě.
komponentu tedy vytvářím v action. Když ji mám v render, píše mi to,
že komponenta neexistuje při pokusu o zpracování formuláře
z komponenty
… jo je to složitý. :)
Editoval Cup (1. 3. 2015 10:15)
- Cup
- Člen | 38
minus –1 je pekna, rikam ze je to v ramci pokusu, mozna by se hodilo rict
svuj nazor. Treba ze pokud chci dynamicky vytvaret komponenty na stranky, tak to
mam udelat jinak. Nebo ze Kazda stranka v Nette musi mit svoji sablonu
v presnem adresari a svuj presenter v jinem a pres to vlak nejede (Toho se
snazim zbavit.) :]
Je to –1 k nepouziti diakritky? –1 k memu slohovemu nadani? :] ? takhle
to muze byt klidne jen silny zlozvyk z diskusi na novinkach ci idnesu.
Editoval Cup (2. 3. 2015 10:27)
- akadlec
- Člen | 1326
Ono ohýbání je cesta do pekel a pak skončích jako většina projektů, nette či jiný FW ohli natolik že již je pro ně problém dělat upgrade FW ale musejí se spoléhat na své fixy, tímpádem ve většině případů přicházejí i o možnosti využívat knihovny třetích stran, fixy ve FW a pak to i docela ztrácí přehlednost. To co řešít ty, tedy dynamické komponenty řeším taky, ale šel jsem na to z jiné strany a vytvořil si manager co mě bude tyto předem definované komponenty spravovat. V db či jinde mám pak uložené názvy komponent a jejich konfiguraci, o zbytek se stará manager.