Vlastni makro a array jako parametr
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- flexroad
- Člen | 117
Ahoj,
rad bych si udelal vlastni makro ktere nastavi nejake parametry pro filtrovani obsahu…
Idelani predstava je nasledujici:
V sablone:
<a href="{setFilter 'news'=>'all'}">set filter</a>
Makro pak vypada nejak takto:
<?php
namespace App\Presenters;
use Latte\Compiler;
use Latte\MacroNode;
use Latte\Macros\MacroSet;
use Latte\PhpWriter;
class TemplateCustomMacros extends MacroSet {
public static function install(Compiler $compiler)
{
$me = new static($compiler);
$me->addMacro('setFilter', array($me, 'setFilter'));
return $me;
}
public function setFilter(MacroNode $node, PhpWriter $writer)
{
//TADY POTRTEBUJI DOSTAT TEN PREDANY ARRAY JAKO ARRAY
return $writer->write('echo %node.word');
}
}
Jen pro uplnost… v neonu registruji takto:
latte:
macros:
- App\Presenters\TemplateCustomMacros::install
Uplne nejidealnejsi predstava by pak byla poslat ty paramentry primo ze sablony jako nested array, jen vybec netusim, jak na to…
Pro priklad:
array('news'=>array('latest', 'all'));
Poradi nekdo, nebo nasmeruje?
Diky,
@flexroad
- Martk
- Člen | 661
V šabloně:
$writer->write('dump(%node.array)');
Ve třídě: Tady je to už složitější a jsou asi dvě možnosti (Napadá mě i třetí možnost, ale tu raději psát nebudu). Buďto se vydat hodně ošklivou, ale snadnou cestou přes eval nebo vyexportovat ze stringu array. Jednoduché pole si umím představit vyexportovat pomocí tokenizeru.
RSS tématu
Téma zavřeno