persistentní parametr v poli
- Oggy
- Člen | 306
# PHP 5.3.3–1ubuntu9.3
# Apache/2.2.16 (Ubuntu)
# Nette Framework 2.0-dev (revision 9f535f9 released on 2011–01–10)
Mám takový dotaz – jak se dají používat persistentní parametry
v poli?
potřebuji mít v poli parametry a nemuset u každého odkazu vypisovat celé
pole..
presenter:
<?php
public $tags;
...
$this->tags = $this->getParam('tags');
...
?>
šablona:
<?php
...
<a n:foreach="$tagGroup->tag() as $tag" n:href="this 'tags[]' => $tag['id']">{$tag['value']}</a>
...
?>
Takto funguje jen první odkaz, který vytvoří url:
…presenter/action/1?tags[0]=7
a při dalším odkazu, který by měl přidat do pole tags další prvek se nic
neděje.. při najetí na odkaz si vypadá odkaz takto:
…presenter/action/1?tags[]=2&tags[0]=7 ale při kliknutí se url
nezmění
jde to řešit takovýmto odkazem:
<?php
<a n:href="this 'tags' => array('1','2')">to prave orechove</a>
?>
ale tady bych musel u každého odkazu vypisovat celé pole a přidat ten daný tag pro aktuální odkaz.
Dělám něco špatně? Neřešil toto již někdo? Děkuju
Editoval Oggy (22. 2. 2011 10:30)
- Filip Procházka
- Moderator | 4668
V čem je problém?
/** @persistent */
public $tags;
public function renderDefault()
{
$this->tags = array(1,2,3);
dump($this->link('this'));
dump($this->link('this', array('tags' => array(3,2,1))));
}
nebo postupné přidávání
public function renderDefault()
{
$this->template->tags = $this->tags;
}
a šablona
{var $tags = array_merge($tags, array(5))}
<a href="{link this, 'tags' => $tags}">pridat neco</a>
neni to sice moc hezke, ale kdyz chces neco pridat, lepsi syntax me nenapada
Editoval HosipLan (22. 2. 2011 12:20)
- Oggy
- Člen | 306
no problém je tady:
<?php
public $tags;
...
$this->tags = $this->getParam('tags');
...
?>
šablona:
<?php
<a href="{link 'this', 'tags[]' => 9}">test</a>
?>
odkazuje sice na stranku: …/?tags[]=9&tags[0]=3
ale při kliknutí se reloadne ale znovu na url …/?tags[0]=3
když jsem to dumpoval z presnteru.. tak generovalo správnou url.. to se děje i v tom na jakou stránku to odkazuje.. ale po přesunu na tu url se vrací k té původní..
nevím jestli to popisuju nějak rozumně :-)
tady v tom dumpu je vzdycky jen ta prvni hodnota
( v tomhle pripade array(1) ▼ [
0 ⇒ „3“ (2)
])
a dalsi hodnoty ne ..
<?php
protected function startup() {
parent::startup();
Debug::barDump($this->params);
$this->tags = $this->getParam('tags');
}
?>
- Oggy
- Člen | 306
>
a šablona
{var $tags = array_merge($tags, array(5))} <a href="{link this, 'tags' => $tags}">pridat neco</a>
neni to sice moc hezke, ale kdyz chces neco pridat, lepsi syntax me nenapada
aha..koukám že mě předběhl než jsem odpověděl.. o tomhle vím.. jen jsem se ptal jestli to takhle musím dělat u každého odkazu nebo právě využít těch vlastností persistentního parametru..