2009-09-30 18 views
29

come posso reindirizzare a un'altra azione che passa 2 o più parametri? questo codice:symfony reindirizza con 2 parametri

$this->redirect('input/new?year=' . $year . '&month=' . $month); 

risultati in URL:

http://.../input?year=2009&month=9

risposta

53

Bene, questo è normale, "reindirizzare" reindirizzare a un URL assoluto. Si può fare:

$this->redirect($this->generateUrl('default', array('module' => 'input', 
'action' => 'new', 'year' => $year, 'month' => $month))); 
+1

che ha aiutato. eccetto che genera url come "http: //.../input/new/year/2009/month/10" – kipelovets

+3

Se hai una route definita, puoi sostituire 'default' con il suo nome e cambiare il secondo parametro con i parametri dei percorsi, se necessario. – xarch

+4

Se hai una rotta definita, puoi effettivamente usare '$ this-> redirectToRoute ('routename', ['param1' => 'valore', ['param2' => 'valore'])' – chteuchteu

3

penso che questo non è un comportamento normale symfony. Hai definito alcune regole di routing?

Hai provato anche questo:

$this->redirect('module/action?'.http_build_query($paramsArray)); 
+0

no, questo non aiuta – kipelovets

1

Cosa strana.

$this->redirect('@default?module=input&action=new&year=' . $year . '&month=' . $month); 

lavoro per voi?

+2

sì, anche questo funziona. grazie, ma la soluzione di xarch è più carina =) – kipelovets

-3
$this->redirect('input/new/year/' . $year . '/month/' . $month); 
+3

questo compromette l'interno sistema di routing di symfony – jochil

+1

in realtà no. Il motore di routing interno intelligente di symfony è esattamente il motivo per cui questo reindirizzamento funziona! ma grazie per il voto negativo;) – Mohammad

+5

quando lo fai in questo modo devi cambiare tutti i link/reindirizzamenti quando regoli la regola di routing – jochil

4

È inoltre possibile utilizzare redirect, specificando il nome del percorso e il parametro di matrice:

$this->redirect('route_name', array('year' => $year, 'month' => $month)); 

(Testato su Symfony 1.4)

2

In attualmente supportati Versioni Symfony (2.7+) it's even easier:

return $this->redirectToRoute('default', array('year' => $year, 'month' => $month));