Makra {form}, {label}, {input}… a pro description?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

Když mám:

<?php
$form->addText("value","Name")
	->setOption("description","Don't use fake ID!")
?>

A chci to vše vypsat v šabloně, jak na ono description?

{form formName}
{label value /}
{input value}

/* neúspěšně jsem zkoušel:
{input value, description => "Neco"}
{descprition value}
*/

Jistě to lze růčo se <small>, ale nechci to prasit, pokud to jde jinak.

Editoval Schmutzka (4. 8. 2011 22:49)

Filip Procházka
Moderator | 4668
+
0
-

Makro description bohužel neexistuje :)

ale mohlo by fungovat něco jako

$helperSet = new Nette\Latte\Macros\MacroSet($engine->parser);
$helperSet->addMacro('inputHelp', '$__desc = $form[%node.word]->getControl()->getOption("description");if ($__desc instanceof Html) { echo %escape($__desc); } else { echo "<p>", %escape($__desc), "<p>"; }');

a v šabloně

{inputHelp name}
David Grudl
Nette Core | 8228
+
0
-

{$form[value]->options[description]}

Tomáš Votruba
Moderator | 1114
+
0
-

David Grudl napsal(a):

{$form[value]->options[description]}

Pěkné. Díky oběma.

Zkoušel jsem i ono vlastní makro (dle https://forum.nette.org/…a-v-2-0-beta) a i když neháže chyby (tedy je reglé), nic nevypisuje.

<?php

// BasePresenter.php
public function templatePrepareFilters($template) {
	$latte = new Nette\Latte\Engine;
	$macroSet = new Nette\Latte\Macros\MacroSet($latte->parser);
	$macroSet->addMacro(
		'inputHelp',
//		'echo $form[%node.word]->options[description];'
		'$__desc = $form[%node.word]->getControl()->getOption("description");if ($__desc instanceof Html) { echo %escape($__desc); } else { echo "<p>", %escape($__desc), "<p>"; }'

	);
	$template->registerFilter($latte);
}

// šablona
{inputHelp value}

?>

Kde dělám chybu?

Editoval Schmutzka (6. 8. 2011 0:55)

petr.pavel
Člen | 535
+
0
-

HosipLan omylem přidal ->getControl(), které do makra nepatří. A jestli nechceš obalovat popisek odstavcem, můžeš to celé zeštíhlit na

$macroSet->addMacro(
  'description',
  '$__desc = $form[%node.word]->getOption("description"); echo %escape($__desc);'
);

Otestováno na Nette Framework 2.0-beta (revision f38d86f released on 2011–08–24).