2012-06-14 11 views

Respuesta

13

Hay un Zend \ View \ Helper \ ServerUrl para crear la url completa en la vista de zend. Pruebe el siguiente código en su plantilla de visualización.

<?php echo $this->serverUrl()?> 
+3

La pregunta se refiere a generar URL completa en la vista. Pero si alguien está aquí buscando cómo hacerlo en el controlador, aquí está: '$ this-> getRequest() -> getServer ('HTTP_HOST'). $ this-> url() -> fromRoute ('carrinho/compra-efetuada') ' – vinigarcia87

42

Puede usar la opción force_canonical en el enrutador. Todas las opciones del router entran en el tercer parámetro del asistente de url:

url($route, $params, $options) 

Así se puede por lo menos así:

$this->url('myroute', array('id' => 123), array('force_canonical' => true)) 
+0

Esta funcionalidad no está referenciada en ningún lugar de la documentación y creo que es bastante común. ¿Sabes cómo forzarlo a usar https, por ejemplo? Hubiera esperado usar algo como 'scheme' => 'https' como parámetro u opción, pero no parece tan fácil –

+0

@DominicWatson No estoy seguro de si hay una opción para establecer el esquema. Creo una url https usando Zend \ Url \ Http como este ejemplo: http://stackoverflow.com/questions/20122535/how-to-forced-https-instead-of-http-after-user-login-in- zend-framework2/20125800 # 20125800 –

22

me encontré con este article con algunos aspectos interesantes:

1) sin parámetros use una matriz vacía:

// Using a route with the name "register" and the route "/register" 
echo $this->url('register', array(), array('force_canonical' => true)); 
// Output: http://mydomain.com/register 

2) nota las diferencias entre:

echo $this->serverUrl(); 
// Output: http://mydomain.com 

y

// Current URL: http://mydomain.com/register 
echo $this->serverUrl(true); 
// Output: http://mydomain.com/register 

3) a partir de la ruta

// The "register" route has the following route: /register 
echo $this->serverUrl($this->url('register')); 
// Output: http://mydomain.com/register 
+0

gracias fr 3rd way – Athlan

0

Si desea establecer URL de base a nivel mundial, puedes hacerlo usando el método onBootstrap:

$e->getApplication()->getMvcEvent()->getRouter()->setBaseUrl($baseUrl); 

En este caso, los ayudantes de navegación también lo usarían.

para traer la corriente URL base utilización ServerUrl ayudante como se describe in this thread:

$serverUrl = $e->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl'); 
$baseUrl = $serverUrl->__invoke(); 
+0

"$ serverUrl -> __ invoke();" ?? ¿No está hecho "__invoke()" para poder ejecutarlo como "$ serverUrl()"? – Zippp

Cuestiones relacionadas