Jak v Nete 2.0 zprovoznit confirm dialog pro odkaz href
- motorcb
- Člen | 551
Zdravím.
Používám Nette 2.0 a snažím se rozchodit confirm na odkaz.
<a n:href="delete! 'Základ'" n:confirm="Opravdu chcete záznam smazat?">Smazat</a>
Ovšem pak nevím jak confirm volat…
Podle: https://forum.nette.org/…ra-n-confirm bych do Base presneteru mel pridat:
<?php
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
protected function startup()
{
LatteMacros::$defaultMacros['@confirm'] = 'data-confirm="<?php echo %:formatString% ?>"';
}
}
a JS:
<script>
$(document).ready(function () {
$.fn.extend({
triggerAndReturn: function (name, data) {
var event = new $.Event(name);
this.trigger(event, data);
return event.result !== false;
}
});
$('a[data-confirm], button[data-confirm], input[data-confirm]').live('click', function (e) {
var el = $(this);
if (el.triggerAndReturn('confirm')) {
if (!confirm(el.attr('data-confirm'))) {
return false;
}
}
});
});
</script>
Ovšem, je mi vracena chybová hláška:
Class ‚LatteMacros‘ not found
Jak na to?
- Jan Mikeš
- Člen | 771
Koukni na toto: https://latte.nette.org/en/develop#… melo by to vyresit tvuj problem
- motorcb
- Člen | 551
Lexi napsal(a):
Nedaří se :(
Do Homepage presenteru jsem dal:
public function templatePrepareFilters($template)
{
$latte = new Nette\Latte\Engine;
$macroSet = new Nette\Latte\Macros\MacroSet($latte->parser);
$macroSet->addMacro(
'confirm', // makro
'echo \'onclick="alert(\' . $template->dataStream(%node.word) . \');"\' ' // kod
);
$macroSet->addMacro('for', 'for (%node.args):', 'endfor');
}
a při spuštění to hlasi chybu:
Argument 1 passed to Nette\Latte\Macros\MacroSet::__construct() must be
an instance of Nette\Latte\Compiler, instance of Nette\Latte\Parser given,
called in …/www/subdom/sandbox/app/presenters/HomepagePresenter.php on line
23 and defined
- Jan Mikeš
- Člen | 771
Melo by to pridavat dalsi makro, tento radek muzes s klidem v dusi vyhodit.
Tady je api https://api.nette.org/…acroSet.html koukni se na metodu addMacro() a na jeji parametry, jestli mas vse spravne tak jak chces.
Tve makro by pravdepodobne melo vypadat spravne takto:
$macroSet->addMacro(
'confirm', // makro
NULL,
NULL,
'echo \'onclick="alert(\' . $template->dataStream(%node.word) . \');"\' ' // kod
);
Editoval Lexi (24. 7. 2012 8:58)