Nazev komponety a renderu v proměnné

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

Zdravim,

Už jsem tu jednou řešil něco podobného. Ale teď by mne zajímalo jak vložit v šabloně komponentu a její požadovaný render.

Tedy v šabloně by mělo být:

{control $controlName}

A pak bych jen z presenteru nastavoval:

$this->template->controlName = 'cart:small'; // malý košík to ovšem nefunguje,
.
.
nebo
.
.
$this->template->controlName = 'cart'; // Tohle funguje,

Předem dík za info.

Filip Procházka
Moderator | 4668
+
0
-
public function renderDefault()
{
	$this->template->cartRender = 'small';
	$this->template->cartRender = 'default';
}
{control cart:$cartRender}

popř, se koukni zde: https://github.com/…tControl.php
a jak se to používá je zde: https://gist.github.com/627987

webdata
Člen | 153
+
0
-

Toto chápu. Ale já mám v šabloně pouze

{control $controlName}

A potřebuji aby se proměnná $controlName chovala jako kdyby tam bylo

{control cart:small}

Pokud ovšem do $controlName dam „cart:small“ tak vyskočí chyba.

Předělávám totiš svuj e-shop kde by se pak v daném bloku střídali různé obsahy a pak by stačil jeden layout a jedna šablona

Ukazka šablony:

{block content}
<div id="container">
	<div id="rightCol">
		<div id="main">
			{control $controlName, $option} {* VLOŽENÍ OBSAHU STRÁNKY přehled zboží, fotogalerie, text stránky, kontaktní formulář *}
		</div>
		<div id="right">
			<div>
				<div style="text-align: center;"><strong>NÁKUPNÍ KOŠÍK</strong></div>
				<hr />
				{control cart:small} {* MALÝ NÁKUPNÍ KOŠÍK *}
			</div>
		</div>
	</div>
	<div id="leftCol">
		<div>
			<div style="text-align: center;"><strong>KATEGORIE</strong></div>
			<hr />
			{control category} {* VÝPIS KATEGORII *}
		</div>
	</div>
</div>

Jde mi o to že teď mám dvě komponenty pro košík tak proč nemít a chtěl bych to mít v jedné komponentě.

Duvod opravy: upřesnění.

Editoval webdata (13. 2. 2011 14:14)