问题标签 [zend-controller-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 带有 flashMessenger 的 Zend Framework 2 重定向()不起作用
我有一些带有 method_1() 的控制器。在这个方法中,我调用了 method_2()。在 method_2() 我有 (try...catch) - 使用定义的 flashMesseges 和重定向阻止。
但它不起作用。但是如果我写成
一切都好。在 method_1() 代码中
干得好。我不明白。有谁能够帮我?
A 类 - 重定向不起作用。并将消息添加到会话。
B 类 - 重定向工作。并打印消息。
为什么以及如何工作?
php - 如何在不使用 ZF2 中的任何控制器对象的情况下访问 module.php 中的控制器插件 ..?
我想添加错误处理module.php
以在 flash messenger 中添加所有错误消息并重定向到特定页面(在我的要求中):
但在某些错误中,它会抛出对未定义方法插件的调用,$e->getTarget()
因为在某些情况下,错误是在插件绑定之前生成的。我想要一种redirect and flash messenger plugins
无需引用任何控制器即可访问的方法。
zend-framework3 - 如何在 ZF3 上的控制器插件中获取翻译器
我想创建一个插件来在控制器上使用 zend-i18n/translate。在 zf2 上,我有一个控制器插件可以为我执行此操作,但在 zf3 上我无法让它工作。如何在控制器内部或通过带有 zf3 的控制器插件使用 zend-i18n?
========== 我刚刚在 zf doc 上找到了我需要的东西:https ://docs.zendframework.com/zend-mvc-i18n/services/#mvctranslator-and-translatorfactory
如果您已经在 module.config.php 上将翻译器配置为工厂,则可以注入控制器插件。
php - 从视图助手调用自定义插件
有没有办法从 ZF3 中的视图助手调用自定义插件?
根据 ZF3,助手的工厂是由我创建的。
在 ZF2 中,这就是我们所说的插件。
ZF3去掉serviceLocator后,如何调用插件?
编辑
module.config
MymethodController\CustomPlugin
redirect - Zend Framework项目目录重命名后,插件redirect()已经停止工作
我想在不关闭原始设计的情况下测试我的项目的新设计。我将整个源目录复制到新目录。我准备了如下子域和目录名称(这是共享主机):
我在本地主机(Windows、Apache2.4、php 5.6)上所做的相同。刚刚将“1”添加到新目录名称并复制源目录的所有内容。在本地主机上,两个“站点”都可以解决任何问题。
但是在我尝试使用重定向控制插件之前,在共享主机上重复的站点工作正常。结果我只看到空白页。它发生在我所有的 14 个模块和我使用的任何路线中。
一个示例调用:
,其中路由'main'配置为:
其他几个事实:
- 我没有使用事件(如 MvcEvent::EVENT_DISPATCH 或任何其他事件)
我在 Application 模块中只有一个 onBootsrtap() 方法(其他 13 个模块只不过是 Module.php 中的 getConfig() ):
/li>$this->redirect()->toRoute('main') 返回(恕我直言)正确的对象:
浏览器中的地址还是一样的。
- 浏览器开发工具显示浏览器没有重定向到任何地方(网络选项卡上没有新条目),
- 浏览器没有收到新的传入数据。
- 提供者共享的 Apache error.log 没有任何条目
Apache access.log 显示
也许这是线索:可以吗,该服务器在 POST 之后发送 /favicon.ico 吗?但为什么?我作为fakeAction() Zend\Http\PhpEnvironment\Response 对象而不是 ViewModel 的结果返回。
我正在捕获所有异常、错误和严格通知,但在这种情况下 - Apache/php/framework 不会触发其中任何一个。
最后一次测试:如果在复制过程中某些文件被损坏,我只是将工作版本的目录从“项目”重命名为“项目1”,效果是一样的——重定向不起作用。
更新 1
- 我删除了供应商目录并通过作曲家再次获取它。
- 缓存清晰(我没有使用缓存,zend 框架一直处于开发阶段)
最终更新!
我发现发生了什么。正如我在我的一个答案中所写,我composer
通过 Zend Studio 界面使用。今天打开 Zend Studio 控制台,仔细查看了控制台日志。每次我使用命令更新/安装依赖 composer
项时都使用自己的缓存(不是在线存储库),它复制了模块 zend-developer-tool 但(出于未知原因)模块的一个文件在本地硬盘的作曲家缓存中损坏。在我删除作曲家缓存并再次运行更新/安装依赖项后,所有工作都应如此。谢谢大家的努力。
zend-framework3 - 如何在 onDispatch 事件中使用插件方法?
我有一个查找用户授权的插件。
我在我的 module.config.php 中声明它如下:
在我的onDispatch(MvcEvent $event)
事件中,我想获取 http 路由参数,查找授权,如果成功,则重定向到正确的路由。
当然找不到插件,它还没有加载:
调用未定义的方法 User\Module::access()
无论如何,我想调用插件方法。在这种情况下有可能使用它吗?像这样的东西:
任何帮助表示赞赏!
**编辑:我尝试了 ermengildo 给我的解决方案。但它不起作用,原因是我还没有和工厂合作过。在一些帮助下,我可能可以学会如何正确地做到这一点。这是我的乳头:
我在这里找到了两个服务:
我将 module.php 更改为(片段!):
公共函数 onDispatch(MvcEvent $event) {
最后我试图将服务声明为工厂:
备注:这里已经有语法警告:...无法解析为类型
如果我调试,我会得到一个异常:
无法将服务“User\Service\AccessControl”解析为工厂;你确定你在配置过程中提供了它吗?
在进一步的解释中,我的 module.php 中的这一行应该是问题所在: