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
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
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}
- Tomáš Votruba
- Moderator | 1114
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
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).