Come posso ottenere l'URL corrente da un modello Twig?Motore modelli ramoscello: richiama l'url corrente
Sto usando Twig con PHP, senza nessun altro framework.
Come posso ottenere l'URL corrente da un modello Twig?Motore modelli ramoscello: richiama l'url corrente
Sto usando Twig con PHP, senza nessun altro framework.
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 }}
.
Mi chiedo se esiste uno strumento interno (metodo variabile ot) per ottenere l'URL da Twig? – nKognito
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
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.
le seguenti opere in Silex e sicuramente in Symfony2 in quanto condividono la classe richiesta (non ho la prova però):
{{ app.request.getRequestUri() }}
'{{app.request.requestUri}}' – eightyfive
Ancora meglio, si. – neemzy
È deprecato, non si dovrebbe usarlo. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme
Go http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
o: {{ app.request.getUri() }}
per la piena Uri.
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
Perché non passare l'URL corrente come variabile di modello? O potresti scrivere un tag modello che emette l'URL. –