ako spravne na komponentu, kam ju ukladat..?
- thunderb
- Člen | 11
Dobry den,
nette framework ma celkom chytil..ale priznam sa,ze v tom teda zatial pekne
„plavu“..Nikdy som nerobil so ziadnym frameworkom, takze v tomto smere som
uplny zaciatocnik..
Potrebujem na stranke vykreslit stromove menu, ktore by teoreticky malo aj
nekonecno urovni, prakticky asi tak dve,tri.. v tomto nieje problem, spravim to
pomocou rekurzivnej funkcie / metody, takym tym sposobom,ze kazdy prvok v menu
ma parent_id.. ale nie o tomto som chcel.. :)
Docital som sa tu na, ze najlepsie to robit pomocou komponenty – control (createControl..).. Chcel by som to ale spravit tak, aby tento control nebol priamo v ziadnom presentery, kedze ju budem chciet pouzivat v roznych presenteroch, resp. pohladoch ..(neviem ci uvazujem spravne) teda by som mal nieco taketo
<?php
class Menu extends Control
{
}
?>
a teraz moje otazky. Kam umiestnit takuto komponentu? Do akeho adresara? Je dolezite ako sa subor bude volat ? musi sa niekde nastavovat cesta? Ako by mal vyzerat control v takejto komponente?
dakujem
- Jod
- Člen | 701
Skús použiť https://github.com/romcok/treeview , mám v tom spravené napr. takéto menu http://plaveckaakademia.sk/sk/bestfit
- Majkl578
- Moderator | 1364
Běžně se komponenty ukládají do app/components nebo app/controls.
RobotLoader ji ale stejně najde kdekoliv.
Jedná se o createComponent, nikoliv o createControl.
Oddělení od presenteru je rozhodně dobrá myšlenka, já například
odděluji i formuláře a v presenteru mám opravdu jen hloupé továrničky.
Zkus prosím psát s diakritikou. A před interpunkcí se nedělá mezera. :)
Editoval Majkl578 (18. 3. 2010 17:08)
- thunderb
- Člen | 11
Ďakujem,
ospravedlňujem sa, už budem písať s diakritikou. Potreboval by som to
ale viac polopate vysvetliť.
1. mám presenter, napríklad homepage
<?php
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
}
..
}
?>
ten je uložený klasicky v app\presenters\HomePagePresenter.php
2. mám komponentu, napríklad spomínané menu, ktorá je uložená napríklad v app\components\MenuControl.php
3. V tejto komponente sa vytvorí stromové menu, ako to mi tiež nieje úplne jasné.. ale povedzme pomocou createComponentMenu()… tam budem mať nejaké funkcie, ktoré mi vrátia výsledok.. povedzme return $actualmenu – priznám sa, že vytváranie továrničiek ešte nie celkom rozumiem, teda rozumiem tomu príkladu na vytvorenie formulára. A aj tak formulár vytváram, ale ešte som nevytváral žiadny iný typ továrničky.
4. A tu sa vrátim k už spomínanému presenteru HomePage. Ako v ňom „zavolám“ vytvorenú „externú“ komponentu MenuControl, resp. továrničku v nej?
Jod ďakujem za príklad, pozeral som na neho, ale je na mňa ešte komplikovaný. Ale z toho čo som vyčítal mám pocit, že tam je createComponetTree ako súčasť presentera Homepage.
A na záver sa chcem spýtať, že ako to vyzerá s dokumentáciou? Nechcem nejako naháňať (aj keď už 8.3 bolo.. :)), skôr ponížene prosím :), pretože takto sa učím iba metódou pokus omyl, čo nieje až tak na škodu (len mám v tom dosť hokej) a napríklad sekcia „Tvoříme komponentu“ v quick start neexistuje..
Ďakujem za trpezlivé odpovede.. :)
Editoval thunderb (19. 3. 2010 18:26)
- bazo
- Člen | 620
ak mas v sablone
{widget menu}
zavola sa prave tvoja tovarnicka v presenteri s nazvom createComponentMenu, cize komponentu je zvycajne zbytocne volat v presenteri
takze ak chces mat to menu na kazdej stranke, vloz tu tovarnicku do BasePresenteru, aby si ju ostatne presentery podedili.
kapis?