Používanie BasePresenter s Modulmi

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

Zdravím ľudkovia…
Chcem sa Vás spýtať na používanie BasePresenteru s Modulmi

Mám tri moduly:
wwwModule
dahsboardModule
adminModule

a ako iste viete v každom mám zložky presenters a templates
Rád by som vedeľ či je lepšie používať BasePresenter ako predka v app/presenters alebo je lepšie v každom danom module vytvoriť pre daný modul vlastný BasePresenter ?
Alebo to nehrá žiadnu hlavnú rolu a BasePresenter môže ostať v app/presenters odkiaľ bude volaný ostatnými presentermi v moduloch.
Ja len či to nebude mať dopad na bezpečnosť a okolnosti okolo toho keďže dashboardModule a adminModule sú takpovediac privatezóne :)

Editoval SontoEremo (15. 5. 2013 3:05)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Já s modulem vždycky vytvořím i BasePresenter, který dědí od toho z o jedné úrovně výš. Takže společný BasePresenter nechť nastavuje společné věci, a jeho potomek v AdminModule\BasePresenter nechť doplňuje ověření uživatelových práv.

Tabetha
Člen | 140
+
0
-

Urcite si vytvor pre kazdy moule svoj BasePresenter, lebo ak nie tera, tak urcite casom tam budes mat nejake modifikacie a upravy a nebudes to musiet prerabat :)

newPOPE
Člen | 648
+
0
-

Ja pouzivam nieco ako BaseModule kedze mam moduly v adr. modules. Tym padom mam ten Root presenter v nom + dalsie veci.

Ono to vzdy zalezi od arch. aplikacie samotnej a od toho ako chces aby to vyzeralo :-).

SontoEremo
Člen | 341
+
0
-

@vojtech.dobes, @Tabetha, @newPOPE ďakujem za rýchle a priame odpoveďe.
Je dobre, že sa v každom smere môžem obrátiť na toto fórum :) ĎAKUJEM.

Edit: takže može byť niečo ako
app/presenters/CommandPresenter.php
…Module/presenters/BasePresenter.php

CommandPresenter bude vyzerať

<?php
use Nette\Application\UI\Presenter;
abstract class CommnadPresenter extends Presenter
{
}

A ostatné BasePresenter v moduloch

<?php
namespace ...Module;
class BasePresenter extends CommandPresenter
{
}

alebo aj tam musí byť abstract class …Presenter extends CommandPresenter

Editoval SontoEremo (15. 5. 2013 10:18)

Grelek
Člen | 233
+
0
-

Ne, nemusí. Pokud se má BasePresenter vykonávat, abstract tam být nesmí. abstract znamená, že z třídy se nikdy nemá vytvářet objekt, tudíž je to jen předloha, která se nespouští.

Co to je abstraktní třída?

EDIT: Opraveno…

Editoval Grelek (15. 5. 2013 10:40)

SontoEremo
Člen | 341
+
0
-

@Grelek:
Trochu si ma doplietol tou opravou príspevku :)

Ale tak CommandPresenter abstract môže obsahovať ale už BasePresenter v Moduloch by nemal obsahovať abstract.
Správne som pochopil?

newPOPE
Člen | 648
+
0
-

@SontoEremo: Nie.

Pokial potrebujes aby Presenter bol spustany tak nemoze byt abstract. abstract pouzijes len na tie presentery ktore budes mat ako predkov a bude v nich kod ktory by si musel inak X krat pisat…

BasePresenter je presne pripad na abstract nakolko je Base ;-).

castamir
Člen | 629
+
0
-

@SontoEremo: na githubu mám upravený sandbox, kde je to, co hledáš

SontoEremo
Člen | 341
+
0
-

Hahah chlapci teraz sme sa nejako doplietli ale vlastne som to doplietol ja !
@castamir tvojim sandoboxom si dotvrdil čo som sa pýtal a čo mi @Grelek vytkol
@newPOPE, @castamir, @Grelek
v app/presenters ← CommandPresenter < alias BasePresenter CommandPresenter extends Nette\Applic.\UI\Presenter
v …Module/presenters ← BasePresenter extends \CommandPresenter
…Module/preseters ← Homepagepresenter extends BasePresenter

BasePresenter a CommandPresenter < abstract oboje
tak to máš aj ty @castamir v každom BasePresenteri či už v …Module alebo app/presenters
máš abstract class BasePresenter.
a napr. HomepagePresenter už abstract nebude obsahovať.

castamir
Člen | 629
+
0
-

@SontoEremo: je na tobě, jakou konvenci použiješ pro název abstraktního presenteru daného modulu (BasePresenter či CommandPresenter nebo úplně jinak). Tento abstraktní presenter není povinný, ale je velice vhodné ho mít, protože ti šetří kód.

Jak už napsal @vojtech.dobes, udělej si jeden abstraktní presenter (nejvyšší úrovně) a do všech modulů (a případně i submodulů) přidej další abstraktní presenter, který dědí od toho o úroveň výš.

Editoval castamir (15. 5. 2013 15:22)

SontoEremo
Člen | 341
+
0
-

Ďakujem pekne všetkym