nette 2.4. předávání dat do import/include bloků

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

Ahoj,
dříve mě fungovalo, že jsem si v šabloně definoval block „tableLink“ a tento blok jsem mohl ještě v dalších šablonách „upravit“:

šablona „universalTable.latte“

{define #universalTable $tableId, $columns, $columnsButton, $data, $filterNameBasic, $hash, $help, $columnsSettings}
....
				<div class="clearfix" style="margin-bottom: 20px;">
					<div class="row">
						<div class="col-sm-6 col-md-6">
							{block tableLink}{/block}
						</div>
					</div>
				</div>
...

šablona „table.latte“:

{import 'universalTable.latte'}
{include #universalTable 'deda', $columns, $columnsButton, $data, $filterNameBasic, $hash, $help, $columnsSettings}
{define tableLink}
	{* případná změna bloku *}
{/define}

a Default.latte pro presenter:

{block content}
	<div class="container">
		{include '../../../../templates/universal/table.latte'}
		{define tableLink}
			<a href="{link insert}" class="btn btn-default">Vytvořit údaj</a>
		{/define}
	</div>
{/block}

Toto mě zajistilo, že v Default.latte šlo ještě dodat údaje do bloku tableLink případné „odkazy“. Nyní se ale toto „dodání“ neprovede. Dá se to nějak obejít?

tatyalien
Člen | 239
+
0
-

Zatím jsem jen rozjel to, že musím v default.latte:

		{import '../../../../templates/universal/table.latte'}
		{include #universalTable 'deda', $columns, $columnsButton, $data, $filterNameBasic, $hash, $help, $columnsSettings}
		{define tableLink}
			bbbb
		{/define}

ale to pozbývá smysl v tom, že musím si jen importovat šablonu a pak volat případně vše znovu :(

Editoval tatyalien (7. 6. 2017 8:12)

tatyalien
Člen | 239
+
0
-

Nemáte někdo nápad jak to rozjet bez nutnosti znovu používání kódu definovaného v includované šabloně?
Pokud totiž šablona dědí například 2× tak to už nemůžu použít (znovu zavolání části šablony, protože to vykreslím jinde..)

Editoval tatyalien (8. 6. 2017 11:37)

tatyalien
Člen | 239
+
0
-

Tak jsem trochu pokročil:

{import '../../../../templates/universal/table.latte'}
{include #universalTable 'deda', $columns, $columnsButton, $data, $filterNameBasic, $hash, $help, $columnsSettings}
{define tableLink}
    bbbb
{/define}

můžu vyměnit za:

{include '../../../../templates/universal/table.latte', columns=>$columns, columnsButton=>$columnsButton, data=>$data, filterNameBasic=>$filterNameBasic, hash=>$hash, help=>$help, columnsSettings=>$columnsSettings}

kde můžu definovat předané proměnné aby se použili v includované šabloně.

Ještě mě ale zbývá to, že pokud bych chtěl změnit něco v includované šabloně v definovaném bloku, tak dříve šlo hned po includeblok definovat znovu blok a „přepsat“ ho. Zkoušel jsem do include vkládat i název bloku, ale to mě nesežralo.

{include '../../../../templates/universal/table.latte', #tableLink,...}