template español engine code php twig

español - twig php render



Motor de plantillas Twig: obtener url actual (5)

¿Cómo puedo obtener la URL actual de una plantilla Twig?

Estoy usando Twig con PHP, sin ningún otro framework.


Aquí algo que encontré para hacerlo genérico con el framework sliex. Supongo que mi solución no es perfecta pero es hacer el trabajo.

en su código PHP agregue este código:

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

Entonces en tu plantilla Twig puedes hacer

{{ app.current_url }}

Déjame saber cuál es la línea inferior de este método.


Lo siguiente funciona en Silex y, ciertamente, en Symfony2, ya que comparten la clase de Solicitud (aunque no probé):

{{ app.request.getRequestUri() }}


Teniendo en cuenta las mejores prácticas, en este momento debes 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 nunca inyectar el servicio de solicitud, sino inyectar el servicio request_stack en lugar de [...]

Así que en una aplicación Silex se podría lograr con:

app.request_stack.getCurrentRequest.getUri



Encontrar la URL actual

La dirección URL actual es suministrada por su servidor web y escrita en $_SERVER super-global. Ejecute este pequeño script, <?php echo ''<pre>''; print_r($_SERVER); <?php echo ''<pre>''; print_r($_SERVER); , a través de su servidor y la raíz para encontrar los valores que está buscando.

Preguntas relacionadas sobre este tema:

El manual de PHP describe la naturaleza de los valores $_SERVER disponibles aquí .

Obteniendo la URL en TWIG

Después de tener la URL, debe pasarla como una variable de plantilla al llamar a render(...) en la instancia de la plantilla Twig. Por ejemplo, podrías 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));

Para usar la variable en la plantilla, use la sintaxis {{ variable_name }} .