我正在研究一个ZF2项目,我发现这真的很奇怪。
在视图开头的代码是:
<?php
$sl = $this->getHelperPluginManager()->getServiceLocator();
$routeMatch = $sl->get('Application')->getMvcEvent()->getRouteMatch();
var_dump(is_object($routeMatch));
var_dump(method_exists($routeMatch, 'getMatchedRouteName'));
$route = $routeMatch->getMatchedRouteName();
var_dump($route);die;
?>
前两个var_dump
打印true
和最后一个var_dump
打印一个字符串,因此应用程序清楚地达到了这一点。
无论如何,每次应用程序运行时,我都会在Apache错误日志中发现以下致命错误:
PHP致命错误:调用成员函数getMatchedRouteName() 在非对象上
为什么会这样?我怎么能避免这个?
答案 0 :(得分:0)
很可能,每个人都在说实话!
我可以看到代码正常工作,因为它适用于特定的HTTP请求。
无论如何,加载网页还有一些其他内容的HTTP请求(css,images,...)。
缺少其中一个文件。
Apache配置为如果请求请求文件且文件不存在,则请求将转发到index.php,即转发到我的zf2应用程序。由于没有路由匹配请求,因此应用程序显示404消息。
Zf2的预配置方式是在404页面中也显示了layout.phtml(我的代码所在的位置)。它就是错误发生的地方。
我找@TimFountain的借口,因为他的建议是纠正,我最初驳回了它。