Pomoc s vhodným návrhem komponent

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

Ahoj,
stále se ještě snažím pochopit jak v rámci nette co nejsprávněji používat komponenty.

Dejme tomu, že mám tento případ. V rámci aplikace, chci zobrazovat přehled produktů, dále chci produkty editovat a přidávat.
Mám tedy tři komponenty (zobrazení, přidání, editace).
Tyto komponenty momentálně nechci zobrazovat současně. Vždy bude na stránce zobrazena pouze jedna komponenta.

Jsem tedy v situaci, kdy bych si pohodlně vystačil pouze s presentery, ale pro budoucí rozšiřování aplikace chci použít komponenty.

Jde mi teď o to, že komponentu vždy načítám přes presenter. Budu mít tedy ve výsledku 3 presentery, kde každý zobrazí jednu komponentu? A ke každému presenteru šablonu, v které bude ale vlastně pouze {control jmenoKomponenty}, protože budu zobrazovat opravdu jen komponentu. Uvažuji správně?

Místo nějakých šesti souborů (3× presenter + 3× šablona) jich budu mít 15 (3× presenter + 3× šablona presenteru + 3× componenta + 3× šablona componenty + 3× tovarnička).

Díky Dan

Azathoth
Člen | 495
+
0
-

já někdy mám v rámci jednoho presenteru v rámci jedné akce template, kde mám něco jako
{if $nejakaPodminka}
{control komponenta1}
{else}
{control komponenta2}
{/if}

a presenter má v sobě tovární funkci na obě komponenty…
komponenty jsou dobré právě na to, abys neměl zbytečně moc presenterů. Podle mne.

Myiyk
Člen | 321
+
0
-

Továrničky můžeš dávat ke komponentám.

Nemusíš zrovna použít 3 presentery, stačí jeden s akcemi zobrazit, přidat, editovat.
Tématicky pokud se jedná o jeden typ položky, tak použiješ jeden presenter, např. „ProductPresenter“.

1× presenter + 3× šablona presenteru + 3× componenta s továrničkou + 3× šablona componenty = 10 souborů

Lze mít také jednu univerzální šablonu pro presentery. V šabloně budeš mít komponentu přes proměnnou (ne staticky jako obvykle). S tím budeš na 8 souborech.

Šaman
Člen | 2659
+
0
-

Snižovat počet souborů tímto způsobem mi nepřijde dobrý. Jeden presenter pro jednu problematiku (u tebe pro jednu entitu) ano, ale určitě ne nějaký jeden magický presenter pro různé entity. A ty továrničky bych dal taky zvlášť, i když spolu s komponentou by to asi nemělo ničemu vadit.

Ale zato bych oddělil formulář a pokud to není potřeba, tak bych ho asi ani neschovával do komponenty. To už je ale spíš věc filosofie a osobních preferencí.

David Kudera
Člen | 455
+
0
-

Souhlas s @Šaman , tedy kromě poslední věty, ale jak říká, je to otázka osobních preferencí.. Ty moje jsou mít naprosto všechno v komponentách. Jen já mám obvykle komponentu na výpis a potom jednu na přidání a editaci dohromady. Ty formuláře mívám stejný, tak to nechám v jedné komponentě. Stačí tam jedna podmínka: jestli mám entitu, naplň formulář defaults a přes onSuccess volej třeba processUpdate, jinak volej processInsert.

Edit: a jeden presenter se 3 akcemi

Editoval David Kudera (16. 5. 2015 6:53)