Zděděný block nevidí na proměnné původního blocku

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

Dědění bez proměnných? Má to význam?

mám obecnou šablonu pro manuální vykreslení formuláře, je už hodně chytrá a fungovala v 095, ale teď se snažím portovat do nette 2

<?php
např. vykreslení group
	{foreach $groups as $group}
		{block #group}
.....hodně věcí
		{/block}
	{/foreach}
?>

a teď potřebuji něco málo upravit jen třeba pro konkrétní místo v konkrétní šabloně takže podědím

<?php

{extends '../../@edit.latte'}

	{block #group}
		{if $group->options['label'] == "Bankovní účty"}

... takžře tohle si vykreslím podle svého

		{else}
			{include #parent}
		{/if}
	{/block}

?>

ale problém je, že proměnná group není známá! jakto? 095 fungovalo normálně, k čemu je dědění pokud nemůžu použít proměnné co rodič?

asi souvisí s tímto tématem

https://forum.nette.org/…lni-promenne

dodatek:

problém je v

{include #parent}

ale ve většině případů prostě neznám názvy okolních proměnných, jak je předat?

Editoval mcmatak (23. 1. 2012 0:37)

mcmatak
Člen | 504
+
0
-

zatím jsem řešil tak, že jsem prošel všechny šablony v mém případě jsou to stovky šablon a přidal k

{include #parent}

všechny proměnné, radost je když jsem zjistil, že originál potřebuje přidat další proměnnou, takže to znamená vše znovu projít a hlavně vůbec si tohle uvědomit to je věc

navíc někde, kde jsou dva řádky nějakého kódu musíte přemýšlet odkud to je a přidávat tam proměnné, které vůbec nepotřebujete a programátor nezná, přijde mi to docela divné

jak se to píše, nechceš se na to d.g. podívat a zamyslet jeslti si to vymyslel dobře? řešit dg

Editoval mcmatak (23. 1. 2012 19:55)

petr.pavel
Člen | 535
+
0
-

No já nevím, spíš bych řekl, že to je fíčura, ne chyba. To, že ti stojí v cestě, bude tím, že nepřemýšlíš ve stylu Nette. Řešením tedy bude vymyslet strukturu tvých šablon tak, aby všechny nepotřebovaly znát všechny proměnné, které v nějaké z nich použiješ.

A kdybys potřeboval fakt někam předat hromadu parametrů, můžeš použít pole.

Filip Procházka
Moderator | 4668
+
0
-

@**petr.pavel**: uniká ti ovšem fakt, že ve verzi 0.9 to fungovalo. Tato feature byla tedy odstraněna a byla docela drsně porušena zpětná kompatibilita, rozhodně to tedy není „fíčura“.

Pokud to ovšem David udělal záměrně (a to pravděpodobně udělal), tak nemá moc význam se o tom bavit dál.

hrach
Člen | 1838
+
0
-

Neslouzi k tomuto ucelu ted define?

mcmatak
Člen | 504
+
0
-

define sem nepochopil to je asi neco jineho

a co se týče záměru davida, no ok, pokud vezmeš v úvahu odkazovaný příklad se zanořením blocku tak tam to chápu, ale sleduj

{include #parent} je trochu jiná hra

jde o to že každá změna rodiče nutí potomky sledovat co má rodič za parametry a předávat je, takže jedna nevinná změna v rodiči, naprosto nepodstatná pro všechny potomky znamená změnit i všechny potomky, prostě potomek řídí rodiče a to je blbost

mcmatak
Člen | 504
+
0
-

ale ok, šlo by nějak udělat že předám všechny okolní proměnné? {include #parent, VSECHNO CO ZNAM TAK PREDAT}

Filip Procházka
Moderator | 4668
+
0
-

Sice je to asi hack… ale napadá mě

{include #group, (expand)get_defined_vars()}
mcmatak
Člen | 504
+
0
-

díky, pro mne nejjednodušší řešení pokud to bude fungovat

David Grudl
Nette Core | 8228
+
0
-

Fixed.

mcmatak
Člen | 504
+
0
-

co presne si fixnul? pac ted sem stahl verzi nette z 27.1 a nejak to stale nefunguje

David Grudl
Nette Core | 8228
+
0
-

{include #parent} by mělo přenášet okolní proměnné. Co přesně nefunguje? Pošli sem kdyžtak příklad.