À 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?
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))
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
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()?>
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();