In my view I need to draw full URL. Like this:
http://hostename.com/default/url
When I try to use $this->url(\'default\', array(1,2,3)
I found this article with some interesting ways:
1) without parameters use an empty array:
// 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) note the differences between:
echo $this->serverUrl();
// Output: http://mydomain.com
and
// Current URL: http://mydomain.com/register
echo $this->serverUrl(true);
// Output: http://mydomain.com/register
3) starting from the route
// The "register" route has the following route: /register
echo $this->serverUrl($this->url('register'));
// Output: http://mydomain.com/register
There is a Zend\View\Helper\ServerUrl to create full url in zend view. Try below code in your view template.
<?php echo $this->serverUrl()?>
You can use the option force_canonical
on the router. All router options go into the third parameter of the url helper:
url($route, $params, $options)
So you can so something like this:
$this->url('myroute', array('id' => 123), array('force_canonical' => true))
If you want to set base URL globally, you can do it using onBootstrap method:
$e->getApplication()->getMvcEvent()->getRouter()->setBaseUrl($baseUrl);
In this case Navigation helpers would also use it.
To fetch current base URL use ServerUrl helper as described in this thread:
$serverUrl = $e->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl');
$baseUrl = $serverUrl->__invoke();