Zjednodušení struktury AdminPresenter

Rndoom04
Člen | 72
+
0
-

Zdravím všechny,
jak zjednodušujete, nebo jak by se dala zjednodušit struktura Presenteru? Vždy to mám na pár řádků, ale například AdminPresenter (byť není velký) mám na 2000 řádků a pak se v tom ztrácím – hlavně ve formulářích.

Spíš mi jde o to, jestli nějakým způsobem lze jednotlivé formuláře zvlášť uložit do nějakého souboru a jen ho v tom místě nějak includnout.

Nyní to mám takto:

public function renderNeco() {/** some magic **/}
public function renderNecoJineho() {/** some magic **/}

// Handlery
public function handleNejakyHandler(){/** some magic **/}

// Formuláře
public function createComponentNejakyForm(){/** 100 řádků **/}
public function createComponentNejakyJinyForm(){/** 400 řádků **/}
public function createComponentNejakyDalsiForm(){/** 300 řádků **/}

Jak bych si to představoval:

public function renderNeco() {/** some magic **/}
public function renderNecoJineho() {/** some magic **/}

// Handlery
public function handleNejakyHandle(){/** some magic **/}

// Formuláře
// „include” cesta/k/souboru/admin/nejakyForm.php
// „include” cesta/k/souboru/admin/nejakyJinyForm.php
// „include” cesta/k/souboru/admin/nejakyDalsiForm.php

Netuším, jak vložit pouze funkce do třídy přes externí soubory. V procedurálce bych s tím neměl problém. :)

Díky všem za popohnání. :)

Martk
Člen | 651
+
+1
-

V sandboxu je krásný příklad:

Presenter – https://github.com/…resenter.php

Formuláře – https://github.com/…er/app/Forms

MajklNajt
Člen | 470
+
-1
-

Myslím, že hľadáš skôr traity…

Šaman
Člen | 2632
+
0
-

Tohle bych přes traity nedělal. Definice formuláře v samostatném souboru je fajn, já osobně preferuji mít formulář hned u entity ke které se váže (u silně ORM aplikací), protože změna entity většinou znamená i nutnost upravit formulář.

V presenteru pak zůstane createComponentNejakyForm() jen s několika řádky – typicky se nastaví cíl pro redirect a flashmessage. A actionEditNejaky() se pak načtou defaultní hodnoty. Presenter je tedy krátký: action metody často nastavují defautlni hodnoty formulářů, render načte hodnoty z modelu a předá je šabloně, createComponent vytvoří komponentu z polotovaru. Plus případně nějaké dotazy na práva, víc tam toho nemívám.

MajklNajt
Člen | 470
+
0
-

@Šaman máš pravdu, v prvom rade továrničky, ale ja myslím o krok dopredu, lebo sa mu tie metódy createComponentXXX() budú opakovať vo viacerých presenteroch :)

CZechBoY
Člen | 3608
+
0
-

Hmmm, AdminPresenter? To tam máš jako celou administraci?

Rndoom04
Člen | 72
+
0
-

Martk napsal(a):

V sandboxu je krásný příklad:

Presenter – https://github.com/…resenter.php

Formuláře – https://github.com/…er/app/Forms

Děkuji moc, je to přesně to, co hledám… :)

CZechBoY napsal(a):

Hmmm, AdminPresenter? To tam máš jako celou administraci?

Ano, protože je tam jen pár drobností, co si uživatel sám nastavuje (fotogalerie, psaní aktualit + změna hesla). :)

Editoval Rndoom04 (6. 2. 2020 19:12)

CZechBoY
Člen | 3608
+
+3
-

:D prej jen…
To bych dal tak do 6 presenterů :-)