Get parametry jako array (persistentní) + latte

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

Hned na začátek můžu říct, že mi všechno funguje :)
Jen si nejsem jistý, jestli je to v nette „best practice“ a tak mě zajímá, jestli by to nešlo lépe.

Mám v presenteru persistentní parametr:

<?php
	/** @persistent	 */
	public $tag;
?>

V renderDefault() si jej předávám do šablony:

<?php
public function renderDefault() {
	$this->template->tag = $this->tag;
}
?>

A teď příjde to ošklivé použítí v latte:

	{if in_array('abc',$tag)}
		<a n:href="TentoPresenter: tag => \array_diff($tag, array('abc'))">remove abc</a>
	{else}
		<a n:href="TentoPresenter: tag => \CMA\libs\Utils\array_sort(\array_unique(\array_merge($tag, array('abc'))))">add abc</a>
	{/if}

Účelem je samozřejmě přidávat/odebírat tagy.
Mám tedy 2 dotazy:

  1. Můžu někde použít „use“ abych nemusel psát plně kvalifikované jmeno, jako např. „\CMA\libs\Utils\array_sort“?
  2. Nejde to celé napsat nějak jednodušejc a čitelnějc?

Tagy budou generovány dynamicky, takže to asi není zas až tak důležité, jen mě zajímá jak by jste to řešili vi :)

castamir
Člen | 629
+
0
-

A co si takle tu hodnotu tagu(-ů) vyrešit v presenteru a do šablony házet jen výsledky těch volání, co máš teď v šabloně?

bazo
Člen | 620
+
0
-

sprav si helper alebo makro

norbe
Backer | 405
+
0
-

Tohle bych já osobně řešil v handle metodě..
šablona:

{if in_array('abc',$tags)}
    <a n:href="removeTag! tag => 'abc'">remove abc</a>
{else}
    <a n:href="addTag! tag => 'abc'">add abc</a>
{/if}

presenter:

/** @persistent  */
public $tags;
public function renderDefault() {
    $this->template->tags = $this->tags;
}

public function handleAddTag($tag) { //handleRemoveTag obdobně
    if(!in_array($tag, $this->tags)) {
        $this->tags[] = $tag;
    }
}
public function handleRemoveTag($tag) {
    // odstraneni tagu
}
enumag
Člen | 2118
+
0
-

@norbe: +1 :-) Tohle je správný přístup.

esorimer
Člen | 114
+
0
-

Super, diky :)