在 Zend Framework 2 中扩展 Zend\View\Helper\Url

2024-02-25

我写了一个简单的 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');
        ...
    }
    
}

现在应用程序抛出异常:

致命错误:未捕获异常“Zend\View\Exception\RuntimeException”,并在 /var/www/foo/bar/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php 中显示消息“未提供 RouteStackInterface 实例” 76号线

Zend\View\Exception\RuntimeException:第 76 行 /var/www/foo/bar/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php 中没有提供 RouteStackInterface 实例

我都调试了Url类。文恩MyNamespace\View\Helper\Url使用时,方法Zend\View\Helper\Url#setRouter(...)未调用且未设置路由器。不明白为什么...

如何让它发挥作用?


没有测试过,所以我不知道它是否有效,我只是猜测:

Replace:

$viewHelperManager->setInvokableClass('url', 'MyNamespace\View\Helper\Url');

with:

$viewHelperManager->setFactory('url', function ($sm) use($serviceLocator) {
    $helper = new \MyNamespace\View\Helper\Url;
    $router = Console::isConsole() ? 'HttpRouter' : 'Router';
    $helper->setRouter($serviceLocator->get($router));

    $match = $serviceLocator->get('application')
    ->getMvcEvent()
    ->getRouteMatch();

    if ($match instanceof RouteMatch) {
        $helper->setRouteMatch($match);
    }

    return $helper;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Zend Framework 2 中扩展 Zend\View\Helper\Url 的相关文章

  • ZF2 - BjyAuthorize - 如何从数据库获取规则和防护

    我使用 BjyAuthorize 和 Zend Framework2 来实现授权 并且能够成功集成数据库中的角色 现在我想从数据库表中获取我的规则和守卫 我怎样才能做到这一点 这里最简单的方法和 技巧 实际上是 将您的规则和防护设置为与示例
  • Zend Framework 2 如何渲染模块内的部分?

    我的模块内的目录结构是这样的 Api Module php config module config php src etc view api api index phtml partial test phtml 然后 我正在这样做 但是
  • 具有子路由的子域的 ZF2 路由器配置

    我需要我的路由器配置按如下方式工作 www bmob co uk gt DtCompanyData Controller CompanyMap wage bmob co uk gt DtWage Controller Wage wage b
  • ZF2 - 使用导航视图助手的多个导航菜单

    我正在尝试将主导航与子菜单结合使用以进行更具体的导航 In my layout我这样调用视图助手 this gt navigation main navigation gt menu 并在我的view我这样称呼它 this gt navig
  • 如何在 Zend Framework 2 中创建通用模块/控制器/操作路由?

    我想在 Zend Framework 2 中创建一个通用模块 控制器 操作路由 以便与 ZF2 MVC 架构一起使用 在 ZF1 中 默认路由的定义如下 module controller action 其中模块默认为default 控制器
  • 从控制器内部使用 Html.ActionLink 和 Url.Action(...)

    我想编写一个 HtmlHelper 来呈现具有预设值的 ActionLink 例如 where PageLink是一个调用的函数ActionLink使用已知的操作和控制器 例如 索引 和 页面 Since HtmlHelper and Ur
  • ZF2 fileprg 与集合中的文件

    我无法得到fileprg用于处理集合中的文件的插件 我正在尝试使用上传多个文件FormCollections 但在 form gt getData 没有与我的收藏或文件相关的密钥 我用简单的方法测试了表单和 fileprgfile inpu
  • Zend Framework 2 的注释命名空间未加载 DoctrineMongoODMModule

    我已经加载了 zf2 的 Doctrine MongoODM 模块 我的控制器中有文档管理器 一切都很顺利 直到我尝试保留文档 它因以下错误而失败 语义错误 SdsCore Document User 类中的注释 Document 从未导入
  • Zend Framework 2 - 自定义表单验证

    我需要自定义表单验证 所以我写了一个类似的函数this http framework zend com manual 2 0 en modules zend validator writing validators html one 到目前
  • 如何将外部 javascript 文件添加到 Zend Framework 2 应用程序?

    我需要将 jQuery 和其他 javascript 文件添加到我的 Zend Framework 项目中 我正在尝试使用动作控制器来做到这一点 public function userinfoAction this gt view gt
  • Zend 框架 2 文件下载

    我制作了一个表单来将文件上传到文件夹 data uploads使用Zend Filter File RenameUpload filter 这就像一个魅力 我现在的问题是如何提供这个文件给用户下载呢 我认为它会是这样的 response g
  • 如何验证 ZF2 中的复选框

    我已经阅读了许多针对 Zend Framework 缺乏默认复选框验证的解决方法 我最近开始使用 ZF2 但文档有点缺乏 有人可以演示如何使用 Zend 表单和验证机制验证复选框以确保其被选中吗 我正在为我的表单使用数组配置 使用 ZF 网
  • ZF2 模块最佳实践

    Zend Framework 版本 2 中的新模块系统公认的最佳实践是什么 我的目的是为应用程序的每个控制器创建一个模块 还是应该使用这些模块以某种方式将相关控制器及其模型分组在一起 See Rob Allens 模块简介 http akr
  • 在 zendframework2 中验证日期

    嗨 我想验证 zf2 中的日期字段 形式 我设置 格式 选项来获取我需要的格式 但每次我验证它时都会出现错误 验证器看起来像这样 inputFilter gt add factory gt createInput array name gt
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • 动态更改 Fieldset Fields 所需的参数

    我有一个货币字段集有 2 个字段 金额和货币 class MoneyFieldset public function construct name null options array parent construct name optio
  • 从 Zend Framework 2 中的路由获取 $_GET 参数

    Zend Framework 1 有一种非常简单的方法来解析 URL 路由并在 GET 超全局中设置找到的参数以便于访问 当然 您可以在控制器内使用 gt getParam something 但如果在 URL 中找到参数 则它是also可
  • ZF2表格格式化?

    我正在使用 ZF2 并有一个定义了一堆元素的表单 然后我将其呈现在我的 phtml 中 如下所示 它绘制了一个标签和一个单选按钮 我的问题是如何根据自己的喜好格式化这些元素 例如 使单选按钮水平显示而不是垂直显示 并且可能更改标签的位置 没
  • 通过 ServiceLocatorAwareInterface 注入 ServiceLocator 不起作用

    我读到实现 ServiceLocatorAwareInterface 将把 serviceLocator 注入到同一个类中 所以我得到了这个 Class MyModel implements ServiceLocatorAwareInter
  • 从 Zendframework 2 中的布局调用模型中的方法

    我尝试在 Zendframework 2 中调用模型表单布局中的方法来显示一些用户特定的内容 我尝试在 Module php 的 init 和 onBootstrap 中执行此操作 并尝试声明一些将在 layout phtml 中可用的变量

随机推荐