2012-06-14 15 views

risposta

13

C'è un Zend \ View \ Helper \ ServerUrl per creare l'URL completo nella vista zend. Prova sotto il codice nel modello di visualizzazione.

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

La domanda è di circa generare URL completo nella vista. Ma se qualcuno arriva qui alla ricerca di come farlo nel controller, ecco: '$ this-> getRequest() -> getServer ('HTTP_HOST'). $ this-> url() -> fromRoute ('carrinho/compra-efetuada') ' – vinigarcia87

42

È possibile utilizzare l'opzione force_canonical sul router. Tutte le opzioni di router vanno nel terzo parametro del URL Helper:

url($route, $params, $options) 

Così si può quindi qualcosa di simile:

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

Questa funzionalità non è referenziata in nessuna parte della documentazione e penso che sia una cosa abbastanza comune. Sai come forzarlo anche a usare https per esempio? Mi sarei aspettato di usare qualcosa come 'scheme' => 'https' come parametro o opzione ma non sembra essere così semplice –

+0

@DominicWatson Non sono sicuro se c'è un'opzione per impostare lo schema. Creo un URL https utilizzando Zend \ Url \ Http come questo esempio: http://stackoverflow.com/questions/20122535/how-to-forced-https-instead-of-http-after-user-login-in- zend-framework2/20125800 # 20125800 –

22

Ho trovato questo article con alcuni modi interessanti:

1) senza parametri utilizzare un array vuoto:

// 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) notare le differenze tra:

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

e

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

3) a partire dal percorso

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

grazie 3a via, – Athlan

0

Se si desidera impostare URL di base a livello globale, puoi farlo utilizzando il metodo onBootstrap:

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

In questo caso, anche gli helper di navigazione lo utilizzerebbero.

per andare a prendere corrente URL di base uso ServerUrl aiutante come descritto in this thread:

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

"$ serverUrl -> __ invoke();" ?? Non è "__invoke()" creato per essere in grado di eseguirlo come "$ serverUrl()"? – Zippp

Problemi correlati