我写了一个简单的 url 视图助手,它扩展Zend\View\Helper\Url
并附加到ViewHelperManager
:
MyNamespace\View\Helper\Url
namespace MyNamespace\View\Helper;
use Zend\View\Helper\Url as ZendUrl;
class Url extends ZendUrl {
public function __invoke($name = null, array $params = array(), $options = array(), $reuseMatchedParams = false) {
$link = parent::__invoke($name, $params, $options, $reuseMatchedParams);
...
return $link;
}
}
Application\Module
namespace Application;
use ...
class Module {
public function onBootstrap(MvcEvent $mvcEvent) {
$application = $mvcEvent->getApplication();
$serviceManager = $application->getServiceManager();
$viewHelperManager = $serviceManager->get('ViewHelperManager');
$viewHelperManager->setInvokableClass('url', 'MyNamespace\View\Helper\Url');
...
}
}
现在应用程序抛出异常:
致命错误:在 /var/www/foo/bar/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php 中未捕获异常 'Zend\View\Exception\RuntimeException' 并带有消息 'No RouteStackInterface instance provided'第 76 行
Zend\View\Exception\RuntimeException:第 76 行的 /var/www/foo/bar/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php 中没有提供 RouteStackInterface 实例
我调试了两个Url
类。使用了wenn MyNamespace\View\Helper\Url
,没有调用方法Zend\View\Helper\Url#setRouter(...)
,也没有设置路由器。不明白为什么...
如何让它工作?