[2009–10–14] OldPresenter, OldLatteMacros

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8136
+
0
-

V souvislosti se změnami v šablonovacím systému a podpoře snippetů vznikla otázka, jak zajistit zpětnou kompatibilitu. Jako čistý způsob se mi jeví vytvoření třídy OldPresenter, potomka Presenteru, který bude změněné záležitosti řešit starým způsobem.

Od poslední revize jsou tak $oldLayoutMode a $oldModuleMode v režii třídy OldPresenter. Vzniká tak velmi drobný BC break: k dosažení zpětné kompatiblity je potřeba upravit BasePresenter tak, aby byl potomkem OldPresenter.

OldPresenter nechává šablonovací makra zpracovávat třídou OldLatteMacros, která zachová kompatibilitu u snippetů.

ViliamKopecky
Nette hipster | 230
+
0
-

…a něco víc k novému chování snipetů? :) Nebo až zítra večer?

mcmatak
Člen | 490
+
0
-

nové šablony mne ani tak moc netrápí, ale oldModuleMode asi nezkousnu, neni mozne alespon u toho zustat u stareho modelu? myslim tim prepinacem? oldModuleMode=true

kravčo
Člen | 721
+
0
-

David Grudl napsal(a):

Od poslední revize jsou tak $oldLayoutMode a $oldModuleMode v režii třídy OldPresenter. Vzniká tak velmi drobný BC break: k dosažení zpětné kompatiblity je potřeba upravit BasePresenter tak, aby byl potomkem OldPresenter.

Prepínač zostáva, no nie v triede Presenter, ale v triede pre spätnú kompatibilitu OldPresenter. Pri správnom návrhu a použití BasePresentera ako predka ostatných prezenterov stačí zameniť jeho predka a všetko funguje po starom…

 <?php
 
-class BasePresenter extends Presenter
+class BasePresenter extends OldPresenter
 {
 ...

Editoval kravčo (15. 10. 2009 1:00)

David Grudl
Nette Core | 8136
+
0
-

Jen pár poznámek:

  • OldPresenter je součást vývojové verze, takže se to klidně může změnit, jestli je to blbost
  • někdy se bude muset výchozí nastavení různých $old... proměnných nastavit na FALSE a říkám si, že přidání řádku public $old... = TRUE nebo změna Presenter za OldPresenter je stejně (ne)komplikovaná
  • ale řešení s OldPresenter je asi čistější
  • zároveň naznačuje, že kompatibilitu lze a jak lze řešit na úrovni BasePresenteru (třeba zkopírováním formatXyz metod do něj)

Nová vs. stará adresářová struktura: to je součást hlubší koncepce a tento první krok nemusí vypadat úplně pochopitelně. Nicméně struktura je tvárná a skutečně řešíme pouze výchozí podobu, není třeba mít obavy z přepsání metod formatXyz jak to dělá OldPresenter.