2012-09-12 10 views
7

Ho fatto questa domanda a google ma non riesco a trovare nessuno con il mio stesso problema ... E non penso di essere l'unico qui>. <Aggiunta di attributi alla richiesta di percorso con twig in symfony2

Vediamo, sto usando le traduzioni in symfony2. HO BISOGNO di usare il ramoscello per questo ... Il fatto è che ho bisogno di 3 collegamenti in modo che le persone possano cambiare la lingua del sito. Il link deve reindirizzare alla stessa pagina dell'utente, ma cambiando il '_locale'.

ho pensato a qualcosa di simile:

// in routing.yml 
bundleStuff_someUrl: 
    pattern: /{_locale}/aloha 
    defaults: { _controller: bundleStuff:Aloha:foo } 

bundleStuff_fooUrl: 
    pattern: /{_locale}/foo/{fooParam} 
    defaults: { _controller: bundleStuff:Foo:foo } 

// in view.html.twig 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l1' }) }}">lang1</a> 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l2' }) }}">lang2</a> 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l3' }) }}">lang3</a> 

Il problema diventa quando (in questo caso) il _route è fooUrl ... C'è un modo per aggiungere tutti gli attributi che ho nella vista corrente il percorso che sto cercando? In altre parole riferimento a questo esempio: esiste un modo in cui twig sa di dover aggiungere "fooParam" al percorso se la vista corrente è "fooUrl"?

Grazie in anticipo! Spero che questo post sia utile! : D

risposta

12

_route_params l'attributo di richiesta contiene i parametri del percorso corrente. Quindi il codice ramoscello sarebbe,

{% set route = app.request.get('_route') %} 
{% set route_params = app.request.get('_route_params') %} 

<a href="{{ path(route, route_params | merge({ '_locale': 'l1' })) }}">lang1</a> 
<a href="{{ path(route, route_params | merge({ '_locale': 'l2' })) }}">lang2</a> 
<a href="{{ path(route, route_params | merge({ '_locale': 'l3' })) }}">lang3</a> 
+1

Si noti che questo attributo _route_params è disponibile solo in Symfony 2.1. Se si utilizza 2.0, è possibile utilizzare un'estensione di ramoscello personalizzata come descritto qui: http://htmlpurifier.org/docs/enduser-utf8.html –

+0

Spiacenti, URL errato. Quello giusto è http://stackoverflow.com/questions/9378714/get-current-url-in-twig-template –

+0

Uo! Grazie a tutti e due! : D Ci proverò a casa e dirò cosa. Grazie mille! – ThisIsErico

2

per symfony 2.0 anni può ottenere variabile _locale nel controllore e dopo di invio in una variabile.

Per esempio

Controller:

$language = $this->getRequest()->get('_locale'); 
    $this->$this->redirect($this->generateUrl('bundleStuff_someUrl', array('language' => $language))) 

e dopo in routing.yml

bundleStuff_someUrl: modello:/{lingua}/aloha defaults: {_controller: bundleStuff: Aloha: pippo}

Problemi correlati