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.