私は単純な 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 で、「RouteStackInterface インスタンスが提供されていません」というメッセージを含む例外「Zend\View\Exception\RuntimeException」がキャッチされない76行目
Zend\View\Exception\RuntimeException: No RouteStackInterface インスタンスが /var/www/foo/bar/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php の 76 行目に提供されていません
Url
両方のクラスをデバッグしました。WennMyNamespace\View\Helper\Url
が使用され、メソッドZend\View\Helper\Url#setRouter(...)
が呼び出されず、ルーターが設定されていません。理由がわからない...
それを機能させる方法は?