n:makro „helper“ // šlo by to?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ic
Člen | 430
+
0
-

Potřeboval jsem takhle odstranit bílé znaky z určitého elementu… dokumentace mi poradila asi toto:

<div>
{block|strip}
    <ul>
        <li>Hello</li>
    </ul>
{/block}
<div>

tak jsem automaticky zapsal toto:

<div n:helper="strip">
    <ul>
        <li>Hello</li>
    </ul>
<div>

a nic :)

Nebylo by užitečné mít n:makro ‚helper‘ ?
Nevím jestli už se to tady neprobíralo, google mi s výrazem „n:helper“ moc nepomůže, tak nevím jestli to už není Déjà vu .

Trošku nepřehledné by to bylo u složitějších helperů viz:

<div title="datum">{$datum|date:"%d.%m.%Y"}</div>

<div title="datum" n:helper="date:'%d.%m.%Y'">1234567890</div>

ale přežít se to dá.

Co myslíte?

uestla
Backer | 799
+
+1
-

Taky se mi to místy už párkrát hodilo, asi by ani nebylo těžké si to do maker přidat…

Ale když už, tak bych zůstal věrný zaběhnutému systému, čili n:makro aplikovat na celý element, u něhož je uveden, a n:inner-makro na jeho obsah.

Čili

  • n:helper a
  • n:inner-helper

možná?

Ještě vymyslet řetězení helperů a předávání argumentů (možná by šlo zachovat současnou pajpu pro řetěz a dvojtečku pro argumenty) a bude to připraveno pro konzumaci.

22
Člen | 1478
+
0
-

…můžu vědět v čem je kouzlo krom toho, že zápis je delší?

Navíc, co když potřebuju vypsat do jednoho HTML elementu 2 různé helpery? Se mi to jeví jako samoúčelné a spíš bych to viděl na vlastní makro/doplněk.

uestla
Backer | 799
+
0
-

Delší to není, hele podívej:

{block|strip}
<div>
...
</div>
{/block}

vs.

<div n:helper="strip">
...
</div>
ic
Člen | 430
+
0
-

2 a více helperů si dovedu představit… tohle je myslím očekávaný zápis:

<div n:helper="strip|lower|capitalize">
...
</div>
bojovyletoun
Člen | 667
+
+1
-

šlo:

public function templatePrepareFilters($template)
	{
		$template->registerFilter($e = new Nette\Latte\Engine());
		$s = new Nette\Latte\Macros\MacroSet($e->parser);
		$s->addMacro('helper', 'ob_start()',
			function($n) {
				$w = new \Nette\Latte\PhpWriter($n->tokenizer, $n->args);
				return $w->write('echo %modify(ob_get_clean())');
			});
	}

Editoval bojovyletoun (21. 9. 2011 14:11)

ic
Člen | 430
+
0
-

bojovyletoun napsal(a):

šlo:

Masakr… skutečně to funguje

díky