widget – samostane pouziti sablon

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

Dobry den, pokud pouzivam sablony samostatne, lze nejakym zpusobem pouzivat i komponenty a widgety( jeste poradne nevim jaky je mezi tim rozdil). Pokud ano, kde a jak je definovat. Dekuji za rady.

wdolek
Člen | 331
+
0
-

mam dojem, ze mezi komponentou a widgetem rozdil neni :) … a obavam se, ze to samostatne asi jen tak pouzit nepujde (respektive ne s tou peknou pohodlnosti volani/vytvareni komponent pres presenteri tovarnicku)…

Majkl578
Moderator | 1364
+
0
-

Teoreticky by to jít mohlo, pokud do šablony registruješ hlavní komponentu jako $control a v ní pak budeš mít továrničky obdobně jako v MVP aplikaci. Nedokážu si to ale představit v praxi.

arron
Člen | 464
+
0
-

@wdolek: On tam jisty rozdil je. Widget se pouziva ve smyslu control (dokonce mam pocit, ze widget je v nove verzi nette deprecated), coz je neco, co se umi vykreslit. Zatimco komponenta se vykreslit nemusi umet (viz. komponenta a control).

macesko
Člen | 12
+
0
-

no tak dejme tomu, ze mam jednoduchou aplikaci, ktera do templatu doda data z db jako obsah a pak chci vypisovat nejake informace do sidebaru. Pro nektere stranky treba hledaci formular, submenu, novinky… pro dalsi treba novinky a anketu. Chapu spravne, ze toto resi ty komponenty. Nemohli byste mi nekdo nazorne ukazat jak to definovat a zaregistrovat do templatu? Dekuji mnohokrát.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Bez presenterů by mohlo fungovat tak, že makru {control} předáš libovolnou instanci nějaké tvojí třídy, která se ti bude o nějaký ten požadovaný efekt starat. Na té pak makro zavolá metodu render (nebo render<Neco>). Příklad:

class MyComponent
{
	public function render()
	{
		echo 'hello';
	}
}

U „chystání“ šablony:

$template->myComponent = new MyComponent;

A v šabloně samotné:

{control $myComponent}

To se přeloží na $myComponent->render(); a mělo by to fungovat, protože pokud je parametrem makra control objekt, nijak se netestuje jeho třída, může to být cokoliv. Podotýkým, že jsem to netestoval:)

Editoval vojtech.dobes (26. 10. 2010 22:39)

Aurielle
Člen | 1281
+
0
-

Komponenta by měla být připojena k presenteru, takže k jejímu vytvoření použij továrničku (stejně jako u formulářů).

macesko
Člen | 12
+
0
-

Skvele to jsem presne potreboval. Dekuji za rychlou a obetavou odpoved.