gpt4 book ai didi

php - Zend 框架 : Removing default routes

转载 作者:可可西里 更新时间:2023-10-31 23:26:28 24 4
gpt4 key购买 nike

我正在使用 Zend FW 1.9.2,想禁用默认路由并提供我自己的路由。我真的不喜欢默认的/:controller/:action 路由。

这个想法是在初始化时注入(inject)路由,当请求不能路由到注入(inject)的路由之一时,它应该被转发到错误 Controller 。 (通过使用默认注册的 Zend_Controller_Plugin_ErrorHandler)

一切正常,直到我使用 $router->removeDefaultRoutes(); 禁用了默认路由;当我这样做时,错误 Controller 不再将未路由的请求路由到错误 Controller 。相反,它将所有未路由的请求路由到默认 Controller 上的 indexAction。

有谁知道如何禁用默认的/:controller/:action 路由但保留路由错误处理?

基本上,这就是我所做的:

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->removeDefaultRoutes(); // <-- when commented, errorhandling works as expected

$route = new Zend_Controller_Router_Route_Static(
'',
array('controller' => 'content', 'action' => 'home')
);
$router->addRoute('home', $route);

最佳答案

删除默认路由时的问题是 Zend 不再理解 urls/:module/:controller/:action,因此无论何时发送路由,它都会路由到默认模块、索引 Controller 、索引操作。

Error 插件在 Controller 调度的 postDispath 方法上工作,它之所以起作用,是因为在标准路由器中,如果找不到 Controller 、模块或操作,它会抛出错误。

要在此配置中启用自定义路由,您必须编写一个适用于 preDispatch 的新插件,并检查路由是否正确,然后在它是无效 URL 的情况下重定向到错误插件。

关于php - Zend 框架 : Removing default routes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1421334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com