Přesměrování s odstraněním parametru

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

Ahoj, snažím se implementovat následující věc:

  • na server přijde dotaz, který oproti „běžnému“ dotazu obsahuje parametr navíc (www.example.com/jedna/dve?honza=jde&c=Mh47j9k ← parametr c)
  • server tento parametr zpracuje
  • a následně přesměruje na novou URI, která jej již neobsahuje

    (www.example.com/jedna/dve?honza=jde)

Jak byste to řešili? Nejlogičtější mi asi přijde něco jako:

<?php
abstract class BasePresenter extends Presenter
{
  protected function startup()
  {
    parent::startup();
    if ($this->getParam('c'))
    {
      processParameter();
      $this->redirect("aktuální request bez parametru c");
    }
  }
}

final class SomePresenter extends BasePresenter
{

}
?>

… jen nevím, jak si pohrát s tím aktuálním requestem a jak na něj přesměrovat. Lépe řečeno, jak dokáže přesměrovat presenter sám na sebe s tím, že si odebere jeden parametr?

Nebo přemýšlím špatně? ;-)

Editoval pheidrich (7. 10. 2009 10:51)

Honza Marek
Člen | 1664
+
0
-

Něco jako:

$params = $this->getParams();
unset($params["c"]);
$this->redirect("this", $params);

Píšu to z hlavy.

pheidrich
Člen | 11
+
0
-

Dík, zkusím si s tím pohrát. Nenapadlo mě, že jde v redirectu použít this. Otázkou je, jestli to odpovídá celému aktuálnímu modul:presenter:view, protože tato informace už v $params nejspíš nebude. Jdu to vyzkoumat… :-)

Ondřej Mirtes
Člen | 1536
+
0
-

Já si myslím, že přesně k tomuto slouží signály.

pheidrich
Člen | 11
+
0
-

LastHunter napsal(a): Já si myslím, že přesně k tomuto slouží signály.

Díky za nakopnutí! K signálům jsem se zatím ještě vůbec neprokousal…

Takže asi něco jako toto, že? :-)

<?php
public function handleC($code)
{
        process($code);
        $this->redirect('this');
}
?>

Editoval pheidrich (7. 10. 2009 11:28)

Tomik
Nette Evangelist | 485
+
0
-

pheidrich napsal(a):

Takže asi něco jako toto, že? (…)

Jo. :)