2012-02-18 9 views

risposta

6

Trovare l'URL corrente

L'URL corrente viene fornito dal server web e scritto nel $_SERVER super-globale. Esegui questo piccolo script, <?php echo '<pre>'; print_r($_SERVER);, attraverso il tuo server e esegui il root sul sito per trovare i valori che stai cercando.

domande correlate su questo argomento:

The PHP manual describes the nature of the available $_SERVER values here.

Ottenere l'URL nella TWIG

Dopo aver ottenuto l'URL, è necessario passare come una variabile di modello quando si chiama render(...) nell'istanza template Twig. Ad esempio, potresti codificarlo.

$current_url = // figure out what the current url is 

// pass the current URL as a variable to the template 
echo $template->render(array('current_url' => $current_url)); 

Per utilizzare la variabile nel modello, è possibile utilizzare la sintassi {{ variable_name }}.

+0

Mi chiedo se esiste uno strumento interno (metodo variabile ot) per ottenere l'URL da Twig? – nKognito

+0

Si potrebbe trovare del codice già scritto per lo scopo, ma il recupero dell'URL attuale non rientra nell'ambito di un motore di template, quindi dubito fortemente che Twig abbia qualcosa di integrato. Non ho certamente trovato nulla. – erisco

0

Qui qualcosa ho trovato per renderlo generico con il quadro di sliex. Immagino che la mia soluzione non sia perfetta, ma ha portato a termine il lavoro.

nel codice PHP aggiungere questo codice:

$app = new Silex\Application(); 
// add the current url to the app object. 
$app['current_url'] = $_SERVER['REQUEST_URI']; 

Poi nel template Twig si può fare

{{ app.current_url }} 

fatemi sapere cosa è la linea botom di questo metodo.

25

le seguenti opere in Silex e sicuramente in Symfony2 in quanto condividono la classe richiesta (non ho la prova però):

{{ app.request.getRequestUri() }} 
+5

'{{app.request.requestUri}}' – eightyfive

+0

Ancora meglio, si. – neemzy

+1

È deprecato, non si dovrebbe usarlo. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme

2

Tenendo presente la migliore pratica, in questo momento è necessario utilizzare Symfony\Component\HttpFoundation\RequestStack.

Vedere http://symfony.com/blog/new-in-symfony-2-4-the-request-stack.

Da symfony 2.4, la pratica migliore è quella di non iniettare il servizio di richiesta, ma per iniettare il servizio request_stack invece [...]

Quindi, in un'applicazione Silex potrebbe essere raggiunto con :

app.request_stack.getCurrentRequest.getUri 
Problemi correlati