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.

RSS tématu Téma zavřeno