Zend framework2 Zend Framework 2的基本Url

Zend framework2 Zend Framework 2的基本Url,zend-framework2,Zend Framework2,我想在Zend Framework 2的控制器中获得基本URL,作为img标记的src属性值传递。我将我的图像放在公用文件夹中 如何在Zend Framework 2的控制器中获取基本URL 您可以对任何视图中的绝对URL和相对URL使用视图帮助器 $this->serverUrl(); // output: http://your.domain.com $this->serverUrl('/foo'); // output: http://you

我想在Zend Framework 2的控制器中获得基本URL,作为img标记的src属性值传递。我将我的图像放在公用文件夹中

如何在Zend Framework 2的控制器中获取基本URL

您可以对任何视图中的绝对URL和相对URL使用视图帮助器

$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
编辑:哦,对不起,问题是在控制器级别获取该值,而不是视图。在任何控制器中,您都可以执行以下操作:

$helper = $this->getServiceLocator()->get('ViewHelperManager')->get('ServerUrl');
$url = $helper->__invoke('/foo');
// or
$url = $helper('/foo');
Zend Framework 3的更新

由于默认情况下ZF3中没有控制器,因此需要将helper实例注入控制器,最好使用工厂

对于新手,示例工厂可能如下所示:

<?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);
    }
}
您还可以在视图中使用


如果用于设置图像的
src
属性,则无需在控制器级别进行设置。

为什么不使用绝对路径
?@TimFountain使用完整url可能很方便,例如,您在不发送图像的情况下呈现带有公司徽标的html邮件。问题是如何有效地在controller中获取baseUrl,但在视图中使用它确实是一种更好的做法。很好的做法。从beta版开始就一直在使用ZF2,甚至不知道这个助手。最后总是连接协议和主机名。感谢您更新关于ZF3的问题
/**
 * @var ServerUrl
 */
private $urlHelper;

public function __construct(ServerUrl $helper)
{
    $this->urlHelper = $helper;
}