Snippety – jak je používáte Mk II

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Nejprve bych odkázal původní vlákno od Davida, které klade důležitou otázku. Trochu se zaplevelilo, tak otevírám nové a rovnou se pokusím odpovědět na co nejvíce možností: „V jakých možných situacích lze použít snippety? V kombinaci s jakými makry apod.“?

Použití, co mě napadají:

  1. snippet v šabloně patřící k view (invalidace přímo v presenteru $this->invalidateControl('nameOfSnippet');)
  2. snippet v komponentě (invalidace na komponentě $control->invalidateControl('nameOfSnippet');)
  3. {include @foo.latte} ve snippetu (očekávám vložení šablony stejně jako mimo snippet)
  4. {include @foo.latte}, kde vložená šablona obsahuje snippet (tento snippet by se měl při invalidaci chovat stejně jako by byl v šabloně patřící view
  5. dynamické snippety {snippet "nameOfSnippet$id"} (invalidace $control->invalidateControl("nameOfSnippet$id");, to samé i v presenteru)
  6. invalidace snippetů skutečně ve všech komponentách, ve kterých je metoda zavolána (narážka na Multiplier, ale nechci tu z toho dělat hlášení bugů, jen aby se s tím počítalo)
  7. možnost libovolně používat různé způsoby renderu komponenty ({control foo} {control foo:bar} atd.)

Pokud vás napadá použití, které jsem nezmínil, zkuste ho popsat.

Jednak aby se s nimi mohlo počítat při implementaci, jednak aby se případně došlo k závěru, že nejsou potřeba. Já osobně třeba nepotřebuji ze svých bodů 4 a 5, jen mě napadly jako známé feature requesty.

Editoval vojtech.dobes (16. 12. 2011 3:17)

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

Proč mi nechybí 4:

Myslím, že snippet je úzce provázaný s logikou, která ho invaliduje. Inkludovanou šablonu vnímám jako něco, co mi umožňuje znovupoužít kus HTML kódu. Proto jsem nikdy neměl potřebu do inkludované šablony umisťovat snippet, stačil v hlavní šabloně (buď pro view nebo pro komponentu).

Proč mi nechybí 5:

Dynamické snippety lze podle mě mnohem elegantněji řešit skrze komponenty.

22
Člen | 1478
+
0
-

Mám pocit, že právě bod 4 je předmětem bugu #160. To vysvětlení mi moc nesedí. Proč by kod, který je znovupoužitelný nemohl mít snippet? To je jako by jsi řekl, že do kus kodu, který se includuje, nikdy nepošleš proměnnou z presenteru. Ale fajn, vše se dá řešit komponentou a fakt, že snippet v includované šabloně nefunguje, se dá obejít, stačí akorát vědět, že to jaksi „nelogicky“ nefunguje a jak to udělat jinak.

Editoval 22 (16. 12. 2011 6:29)

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

22 napsal(a):

Mám pocit, že právě bod 4 je předmětem bugu #160

Cílem tohoto vlákna je hlavně dát do kupy požadované scénáře. Jestli jsem tě nepřesvědčil, tak to nechme na seznamu :). Já fakt netuším, jaké potřeby jsou a možnost mít snippet v inkludované šabloně mi obecně taky dává smysl (ačkoliv jsem to nikdy nepoužil).

hrach
Člen | 1838
+
0
-

7. neřeší, kde je snippet, spíš je to bug spojený s tím, jak to bylo implementované, tzn. mergl bych to do 2. pomocí „… na komponentě, at uz v render() nebo renderFoo().“, ci nejak tak…