web-dev-qa-db-fra.com

ZF2: URL complète du Zend Framework 2, y compris le nom de l'hôte

À mon avis, je dois dessiner une URL complète. Comme ça:

http://hostename.com/default/url

Lorsque j'essaie d'utiliser $this->url('default', array(1,2,3)), je n'obtiens que /index/get/. Existe-t-il une méthode Zend pour afficher le nom d'hôte ou dois-je utiliser $_SERVER['HTTP_Host'] à la place? 

13
Sergey Romanov

Vous pouvez utiliser l'option force_canonical sur le routeur. Toutes les options de routeur entrent dans le troisième paramètre de l’assistant URL:

url($route, $params, $options)

Donc vous pouvez faire quelque chose comme ça:

$this->url('myroute', array('id' => 123), array('force_canonical' => true))
45
Jurian Sluiman

J'ai trouvé ce article avec des méthodes intéressantes:

1) sans paramètre, utilisez un tableau vide:

// 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) Notez les différences entre:

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

et

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

3) à partir de l'itinéraire

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

Il existe un Zend\View\Helper\ServerUrl pour créer une URL complète dans la vue zend. Essayez ci-dessous le code dans votre modèle de vue.

<?php echo $this->serverUrl()?>
14
AlloVince

Si vous voulez définir l'URL de base globalement, vous pouvez le faire en utilisant la méthode onBootstrap:

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

Dans ce cas, les aides à la navigation l'utilisent également.

Pour récupérer l'URL de base actuelle, utilisez ServerUrl helper comme décrit dans ce fil :

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