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
+
0
-

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
+
0
-

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.