Вы можете использовать ServerUrl вид помощника для абсолютного URL, и BasePath для относительных из них в любом виде.
$this->serverUrl(); // output: http://your.domain.com
$this->serverUrl('/foo'); // output: http://your.domain.com/foo
$this->basePath(); // output:/
$this->basePath('img/bar.png'); // output: /img/bar.png
Edit: Ой извините, вопрос о том, что значение уровня контроллера, а не смотреть. В любом контроллере вы можете сделать это:
$helper = $this->getServiceLocator()->get('ViewHelperManager')->get('ServerUrl');
$url = $helper->__invoke('/foo');
// or
$url = $helper('/foo');
Обновление для Zend Framework 3
Поскольку контроллеры не ServiceLocatorAware по умолчанию в ZF3, вам нужно впрыснуть экземпляр помощника к контроллеру, предпочтительно с использованием завод.
Для новичков, пример фабрика может выглядеть следующим образом:
<?php
namespace Application\Controller\Factory;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
class ExampleActionFactory implements FactoryInterface
{
/**
* Factories are invokable
*
* @param ContainerInterface $dic
* @param string $requestedName
* @param array|null $options
*
* @throws \Psr\Container\ContainerExceptionInterface
*
* @return ExampleAction
*/
public function __invoke(ContainerInterface $dic, $requestedName, array $options = null)
{
$helper = $dic->get('ViewHelperManager')->get('ServerUrl');
return new ExampleAction($helper);
}
}
и конструктор подпись на контроллере что-то вроде:
/**
* @var ServerUrl
*/
private $urlHelper;
public function __construct(ServerUrl $helper)
{
$this->urlHelper = $helper;
}
Почему бы просто не использовать абсолютный путь? ''? –
@TimFountain с использованием полного URL-адреса может быть удобен, например, вы отправляете html-письмо с логотипом вашей компании без отправки изображения. – SmasherHell