Nejasnosť niektorých pojmov

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

Ahoj.
Nette som používal dávnejšie na jeden projekt, teraz sa k nemu vraciam. Všimol som si, že sa dosť veľa vecí zmenilo, veľa vecí pribudlo, dačo ubudlo. Najmä mi nie su jasné nasledujúce pojmy, ktoré mi všetky znejú veľmi podobne.

block
snippet
widget

Bol by som veľmi rád, keby mi ich niekto priblížil, prípadne ma aspoň nasmeroval na nejaký vhodný príspevok.

Potom mám ešte takú všeobecnú otázku k návrhu. Prečo je Presenter tiež komponenta? Nejak mi to tam nesedí, keďže Presenter nerobí to, čo ostatné komponenty. Podľa mňa by mal iba implementovať IComponentContainer a ISignalReceiver.

redhead
Člen | 1313
+
0
-

widget renderuje control (tedy vykreslitelnou komponentu)
např.:

{control formular}
{control formular:edit}

je stejne jako

$this->getComponent('formular')->render();
$this->getComponent('formular')->renderEdit();

snippet je pro práci s ajaxem, prostě blok který se bude celý ajaxově překreslovat, pokud je invalidován (změněn).

block zachycuje vnitřek blocku do proměnné

Ondřej Mirtes
Člen | 1536
+
0
-

redhead napsal(a):

widget renderuje control (tedy vykreslitelnou komponentu)
např.:

{control formular}
{control formular:edit}

je stejne jako

$this->getComponent('formular')->render();
$this->getComponent('formular')->renderEdit();

snippet je pro práci s ajaxem, prostě blok který se bude celý ajaxově překreslovat, pokud je invalidován (změněn).

block zachycuje vnitřek blocku do proměnné

Upřesnění:

$presenter->getComponent('formular')->render();

nebo

$presenter['formular']->render();

O snippetech:

https://doc.nette.org/…ication/ajax
https://forum.nette.org/…agie-v-praxi

O {block} a {extends}:

https://doc.nette.org/…late-filters#…
přednáška z Pardubické Poslední Soboty: http://blip.tv/file/2514636

Honza Marek
Člen | 1664
+
0
-

redhead napsal(a):

widget renderuje control (tedy vykreslitelnou komponentu)
např.:

{control formular}
{control formular:edit}

Upřesnění: Formuláře zrovna nejsou potomky třídy Control (jen Component). Widget vpodstatě umí renderovat cokoliv, co má metodu render či renderNěco (např. renderEdit).

David Grudl
Nette Core | 8228
+
0
-

hwoo napsal(a):
Potom mám ešte takú všeobecnú otázku k návrhu. Prečo je Presenter tiež komponenta? Nejak mi to tam nesedí, keďže Presenter nerobí to, čo ostatné komponenty. Podľa mňa by mal iba implementovať IComponentContainer a ISignalReceiver.

To je spíš věc terminologie – to, co implementuje IComponent, je komponenta. IComponentContainer je potomkem IComponent, takže pokud presenter implementuje IComponentContainer, tak je také komponenta.