Jak psat n:macro?
- Wizzard256
- Člen | 18
Zdravim, potreboval bych vytvorit n:macro, ale zatim ani podle tutoru netusim jak na to, potreboval bych:
<a n:hrefAllowed="Car:view, $car->id">{$car->label}</a>
aby vypsalo tohle:
<a href="/car/view/1">Ferrari</a>
nebo pokud na to uzivatel nema pravo:
Ferrari
takze samotnej kod v makru by mel bejt:
if (Nette\Environment::getUser()->isAllowed('Car', 'view')) {
echo "<a href=".link(...
else
echo "...
netusi nekdo jak na to? Predem dik
- Jan Endel
- Člen | 1016
Především bych chtěl odkázat na skvělou dokumentaci ohledně maker.
Sám jsem si podle tohohle manuálu dělal makro pro výpis formulářových errorů i mimo makro form, pro inspiraci přikládám:
Macros.php:
use Nette\Forms\Form;
use Nette\Latte\Parser;
use Nette\Latte\Macros\MacroSet;
class Macros extends \Nette\Object
{
public function install(Parser $parser, $classFlash = 'alertbox_bad')
{
$set = new MacroSet($parser);
$set->addMacro('formError',
'$form = $control[%node.word];foreach($form->getErrors() as $error){ echo "<div class=\''. $classFlash .'\'><p>$error</p></div>";}');
}
}
úryvek BasePresenter.php:
public function templatePrepareFilters($template)
{
$latte = new Nette\Latte\Engine;
$myMacros = new Macros();
$myMacros->install($latte->parser);
$template->registerFilter($latte);
}
Editoval pilec (17. 10. 2011 14:59)
- Wizzard256
- Člen | 18
jj, dokumentaci mam projetou, templatePrepareFilters v BasePresenteru taky mam, nicmene nevim jakym zpusobem se resi makra, pokud jsou primo v tagu a ne zvlast
- Wizzard256
- Člen | 18
aha, tak to asi vazlo celou dobu na tom, ze se to makro nijak
nezaregistrovalo, vytvoril sem ten soubor Macros.php a do BasePresenteru dal ten
templatePrepareFilters, a porad to
pise Nette\Latte\ParseException: Unknown macro {...