vlastní confirm makro – špatné generování
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- zapp
- Člen | 32
Zdravim, mam problém s vložením vlastního makra. Nějaký nahrazující text mi to generuje, ale bohužel před tag <a>. Mohl by prosím někdo poradit?
v presenteru
public function templatePrepareFilters($template) {
$template->registerFilter($latte = new Engine);
$latte = new MacroSet($latte->compiler);
$latte->addMacro('confirm', 'echo "data-confirm=\'" , %node.word , "\'"', '');
}
v šabloně
<a n:confirm="Opravdu smazat položku?" href="{plink Delete! $page->id}" class="del ajax"></a>
- Glottis
- Člen | 129
cao, mam taky jeden problem stimhle makrem
v sablone mam
<?php
<a n:href="delete! $pricelist->id" n:confirm="Opravdu si přejete záznam vymazat?">Delete</a>
?>
makro zaregistruju v base presenteru
<?php
function templatePrepareFilters($t)
{
$t->registerFilter($l = new Nette\Latte\Engine);
$l = new Nette\Latte\Macros\MacroSet($l->compiler);
//konfirmace akce
$l->addMacro('confirm', null, null, 'echo " data-confirm=\"%node.args\""');
}
?>
ale ten sicak mi nageneruje toto (za otaznik prida :null)
<?php
<a data-confirm="Opravdu si přejete záznam vymazat?:null" href="neco/default/12?do=delete">Delete</a>
?>
kdyz do sablony otaznik nedam tak ej to v pohode ale ja ho tam chci :) nevite kde je problem?
- potty
- Člen | 13
Po dlouhém hledání jsem to nakonec vyřešil takto, parametr confirmu se už nepřekládá jako PHP kód.
<?php
public function templatePrepareFilters($tpl)
{
$tpl->registerFilter($latte = new Nette\Latte\Engine);
$set = Nette\Latte\Macros\MacroSet::install($latte->compiler);
$set->addMacro('confirm',
NULL,
NULL,
function(Nette\Latte\MacroNode $node, Nette\Latte\PhpWriter $writer) {
return 'echo \' data-confirm="'. $node->args .'"\'';
}
);
}
?>