【发布时间】:2012-01-20 05:34:16
【问题描述】:
我已将在控制器操作顶部重复的一些常见行为重构为 preDispatch 方法 - 这很好,除了我不得不忍受一般的 400 错误,即使确实应该有 404。
这是因为默认的 preDispatch 方法不知道需要什么 Action - 所以我无法测试它是否存在,如果不存在则 404。
除了完全使用 Zend Controller 的 dispatch() 方法并将 Action 名称传递给 preDispatch - 还有更好的解决方案吗?
更新:请注意,这是 Zend Framework 1.10
【问题讨论】:
-
你有可用的请求对象,所以你可以自己检查
-
在下面引用我自己的评论:'动作名称与动作''方法''名称不同'
-
什么是动作“方法”名称?您正在执行一些重定向或在您的操作中调用其他对象?
-
请求对象的 getActionName 方法返回带连字符的操作名称(因为这是我们定义 URL 的方式)——这是由调度程序格式化以获取方法名称(驼峰式)——据我所知可以看出,这些调度程序格式方法不适用于控制器或请求对象(至少,在不破坏封装的情况下)
标签: php zend-framework