Volanie komponent a vytváranie názvou
- Čamo
- Člen | 798
Dobrý večer všetkým,
Chcem sa spýtať či to chápem správne, že sa komponenty volajú až
v šablone zápisom {control názov} a ešte by som chcel vedieť ako sa tvoria
ich názvy. V tom ukážkovom blogu čo je ako príklad to vyzerá šialene.
Názov je napríklad createComponentPostForm a volanie je {control postForm}.
Prečo sa nepíše iba componentPostForm. A keď sa to volá tak záleží na
velkosti písmen, či ako? Mám v tom značný chaos.
Ďakujem za vysvetlenie.
- David Matějka
- Moderator | 6445
Ano, pokud komponenty neinicializujes rucne (treba volanim
$this['someForm']
v presenteru), tak se vytvareji az pri
vykreslovani v sablone, pripadne pokud dochazi ke zpracovani signalu (napr. pri
odeslani formulare) – pak se komponenta vytvori jiz po action* metode
Komponenty se vytvareji (vzdy) v metode createComponentNazevKomponenty. Pri
vykreslovani, nebo kdyz komponentu volas v presenteru, musis mit prvni pismenko
male.
takze kdyz mas v sablone {control someForm}
, bude nette hledat
metodu createComponentSomeForm
- amik
- Člen | 118
že sa komponenty volajú až v šablone zápisom {control názov}
To záleží. Záleží taky, co myslíš tím, že se komponenta
„volá“. Komponenta je reprezentována objektem implementujícím IComponent
a vůbec nemusí být vykreslitelná v šabloně, to je až specifický poddruh
komponenty – control (potomek BaseControl) – proto to pojmenování
„component“ v presenteru a „control“ v šabloně.
Komponenta se z presenteru získává přes array access:
$presenter['component_name']
, a pokud je takto získána poprvé,
je vytvořena pomocí createComponentNázevKomponenty. Při každém dalším
přístupu ke komponentě presenter vrátí již dříve vytvořenou instanci.
No a jeden z případů přístupu ke komponentě je vyrenderování
v šabloně, kde syntaxí {control název} je komponenta získána
z presenteru a vykreslena.
Co se týče dlouhého názvu, určitě smysl má. Název každé metody by měl obsahovat sloveso, protože metoda něco dělá, proto „create“. Mohla by klidně existovat i metoda deleteComponentNázev atd., která by s komponentou na presenteru dělala něco jiného, než že by jí vytvořila.