zf2 php设置,php – 如何在ZF2中的控制台控制器中创建URL?

以下是此问题的解决方法:

// Module.php

use Zend\View\Helper\ServerUrl;

use Zend\View\Helper\Url as UrlHelper;

use Zend\Uri\Http as HttpUri;

use Zend\Console\Console;

use Zend\ModuleManager\Feature\ViewHelperProviderInterface;

class Module implements ViewHelperProviderInterface

{

public function getViewHelperConfig()

{

return array(

'factories' => array(

'url' => function ($helperPluginManager) {

$serviceLocator = $helperPluginManager->getServiceLocator();

$config = $serviceLocator->get('Config');

$viewHelper = new UrlHelper();

$routerName = Console::isConsole() ? 'HttpRouter' : 'Router';

/** @var \Zend\Mvc\Router\Http\TreeRouteStack $router */

$router = $serviceLocator->get($routerName);

if (Console::isConsole()) {

$requestUri = new HttpUri();

$requestUri->setHost($config['website']['host'])

->setScheme($config['website']['scheme']);

$router->setRequestUri($requestUri);

}

$viewHelper->setRouter($router);

$match = $serviceLocator->get('application')

->getMvcEvent()

->getRouteMatch();

if ($match instanceof RouteMatch) {

$viewHelper->setRouteMatch($match);

}

return $viewHelper;

},

'serverUrl' => function ($helperPluginManager) {

$serviceLocator = $helperPluginManager->getServiceLocator();

$config = $serviceLocator->get('Config');

$serverUrlHelper = new ServerUrl();

if (Console::isConsole()) {

$serverUrlHelper->setHost($config['website']['host'])

->setScheme($config['website']['scheme']);

}

return $serverUrlHelper;

},

),

);

}

}

当然,您必须在config中定义默认主机和方案值,因为无法在控制台模式下自动检测它们.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值