如何在布局视图中检查无效路由
How to check for invalid route in layout view
我在 Application/view/layout/layout.phtml 中编写了这段代码,用于添加指向当前页面的 link。这是我为调试目的添加的,用于刷新当前页面。
<li class="active"><a href="<?php echo $this->url() ?>"><?php echo $this->translate('Refresh') ?></a></li>
只要我没有无效路由(404 错误),它就可以正常工作。我得到低于致命错误
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException'
with message 'No RouteMatch instance provided'
我不想通过在尝试呈现 url 之前添加一个条件来检查它是 404 错误还是无效路由来处理这个问题。我不知道该怎么做。我试图查看 Zend\View\View class 和 ViewModel class 的源代码,看看是否有办法获取错误代码或可以告诉它 404 错误的东西。
编辑:
作为最后的手段,我添加了如下所示的 try catch 块,它工作正常但想检查是否有任何优雅的方法
<?php
try{
$url = $this->url();
?>
<li class="active"><a href="<?php echo $url ?>"><?php echo $this->translate('Refresh ') ?></a></li>
<?php
} catch (Exception $ex) {
}
?>
您收到的异常消息不是因为 route 未定义,而是因为 routeMatch
的参数URL 查看助手 Zend\View\Helper\Url
尚未设置。
通常在使用 URL 助手时,您可以提供路由名称作为第一个参数。助手将在内部使用路由器和路由匹配来根据路由配置生成正确的 URL 字符串。
例如
echo $this->url('test'); // will create the route matching the test route name
助手还允许您不提供路由名称,$this->url()
,在这种情况下,它会在创建这些路由时默认使用最后一个 匹配的 路由。但是,当您不能依赖它时,有一种特殊情况;当应用程序无法匹配路由时,将没有 RouteMatch
可用。
因此,当应用程序尝试加载 404 错误模板(由 layout.phtml
包装)时,在 layout.phtml
中使用此 shorthand 便捷方法 URL查看助手将没有 RouteMatch
可用并抛出您收到的错误。
要解决此问题,在布局或错误脚本中调用 URL 视图助手时应始终提供路由名称。
我在 Application/view/layout/layout.phtml 中编写了这段代码,用于添加指向当前页面的 link。这是我为调试目的添加的,用于刷新当前页面。
<li class="active"><a href="<?php echo $this->url() ?>"><?php echo $this->translate('Refresh') ?></a></li>
只要我没有无效路由(404 错误),它就可以正常工作。我得到低于致命错误
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'No RouteMatch instance provided'
我不想通过在尝试呈现 url 之前添加一个条件来检查它是 404 错误还是无效路由来处理这个问题。我不知道该怎么做。我试图查看 Zend\View\View class 和 ViewModel class 的源代码,看看是否有办法获取错误代码或可以告诉它 404 错误的东西。
编辑:
作为最后的手段,我添加了如下所示的 try catch 块,它工作正常但想检查是否有任何优雅的方法
<?php
try{
$url = $this->url();
?>
<li class="active"><a href="<?php echo $url ?>"><?php echo $this->translate('Refresh ') ?></a></li>
<?php
} catch (Exception $ex) {
}
?>
您收到的异常消息不是因为 route 未定义,而是因为 routeMatch
的参数URL 查看助手 Zend\View\Helper\Url
尚未设置。
通常在使用 URL 助手时,您可以提供路由名称作为第一个参数。助手将在内部使用路由器和路由匹配来根据路由配置生成正确的 URL 字符串。
例如
echo $this->url('test'); // will create the route matching the test route name
助手还允许您不提供路由名称,$this->url()
,在这种情况下,它会在创建这些路由时默认使用最后一个 匹配的 路由。但是,当您不能依赖它时,有一种特殊情况;当应用程序无法匹配路由时,将没有 RouteMatch
可用。
因此,当应用程序尝试加载 404 错误模板(由 layout.phtml
包装)时,在 layout.phtml
中使用此 shorthand 便捷方法 URL查看助手将没有 RouteMatch
可用并抛出您收到的错误。
要解决此问题,在布局或错误脚本中调用 URL 视图助手时应始终提供路由名称。