¿Cómo puedo obtener la URL actual de una plantilla Twig?Twig templates engine: obtener la URL actual
Estoy usando Twig con PHP, sin ningún otro marco.
¿Cómo puedo obtener la URL actual de una plantilla Twig?Twig templates engine: obtener la URL actual
Estoy usando Twig con PHP, sin ningún otro marco.
Encontrar la URL actual
La URL actual es suministrada por el servidor web y escribe en el $_SERVER
súper mundial. Ejecute este pequeño script, <?php echo '<pre>'; print_r($_SERVER);
, a través de su servidor y busque los valores que está buscando.
preguntas relacionadas sobre este tema:
The PHP manual describes the nature of the available $_SERVER
values here.
Obtener la URL en RAMITA
Una vez que tenga la URL, es necesario pasarlo como una variable de plantilla al llamar render(...)
en la instancia de la plantilla de la ramita. Por ejemplo, puede codificar esto.
$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));
utilizar la variable en la plantilla, se utiliza la sintaxis {{ variable_name }}
.
Me pregunto si existe alguna herramienta interna (variable o método) para obtener URL de Twig? – nKognito
Puede encontrar algún código ya escrito para este propósito, pero recuperar la URL actual no está dentro del alcance de un motor de plantillas, así que dudo que Twig tenga algo incorporado. Ciertamente no pude encontrar nada. – erisco
Aquí encontré algo para que sea genérico con sliex Framework. Supongo que mi solución no es perfecta, pero es hacer el trabajo.
en su código PHP añadir este código:
$app = new Silex\Application();
// add the current url to the app object.
$app['current_url'] = $_SERVER['REQUEST_URI'];
Luego, en su plantilla Twig se puede hacer
{{ app.current_url }}
Déjame saber lo que es la línea botom de este método.
las siguientes obras en Silex y con toda seguridad en Symfony2, ya que comparten la clase de solicitud (no he probado sin embargo):
{{ app.request.getRequestUri() }}
'{{app.request.requestUri}}' – eightyfive
Mejor aún, sí. – neemzy
Desaprobado, uno no debe usarlo. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme
Ir http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
o: {{ app.request.getUri() }}
para URI completa.
Teniendo en cuenta las mejores prácticas, en este momento debe usar Symfony\Component\HttpFoundation\RequestStack
.
Ver http://symfony.com/blog/new-in-symfony-2-4-the-request-stack.
A partir de Symfony 2.4, la mejor práctica es no inyectar el servicio de petición, pero para inyectar el servicio request_stack en lugar [...]
Así, en una aplicación de Silex se podría lograr con :
app.request_stack.getCurrentRequest.getUri
¿Por qué no pasar la URL actual como una variable de plantilla? O podría escribir una etiqueta de plantilla que emita la URL. –