Php 如何在ZF2中删除路由?
我已将以下模块安装到ZF2应用程序中:、和。虽然我的问题比较笼统,但我只是想弄清楚我想做什么Php 如何在ZF2中删除路由?,php,routing,zend-framework2,Php,Routing,Zend Framework2,我已将以下模块安装到ZF2应用程序中:、和。虽然我的问题比较笼统,但我只是想弄清楚我想做什么 zfcadmin-路由是/admin。zfcuser-路由是/user。ZfcUserlist模块随附zfcuser的子路由,命名为ZfcUserlist,并指向/user/list 我想通过/admin/user调用用户列表,而不是/user/list。这当然没有问题,我只是为zfcadmin注册了一个子路由 现在我想删除模块附带的用户列表的默认路由。所以我的问题是:如何在ZF2中注销/删除某个路由
zfcadmin
-路由是/admin
。zfcuser
-路由是/user
。ZfcUserlist模块随附zfcuser
的子路由,命名为ZfcUserlist
,并指向/user/list
我想通过/admin/user
调用用户列表,而不是/user/list
。这当然没有问题,我只是为zfcadmin
注册了一个子路由
现在我想删除模块附带的用户列表的默认路由。所以我的问题是:如何在ZF2中注销/删除某个路由
为了澄清问题,我有以下途径:
/admin
/admin/user <- I added this one
/user/list <- This comes shipped with the ZfcUserlist-module. I want to remove it
/admin
/admin/user要实现您想要的功能,您需要在Module.php
中使用它:
namespace Foo;
use Zend\ModuleManager\ModuleEvent;
use Zend\ModuleManager\ModuleManager;
class Module
{
public function init(ModuleManager $moduleManager)
{
$events = $moduleManager->getEventManager();
// Registering a listener at default priority, 1, which will trigger
// after the ConfigListener merges config.
$events->attach(ModuleEvent::EVENT_MERGE_CONFIG, array($this, 'onMergeConfig'));
}
public function onMergeConfig(ModuleEvent $e)
{
$configListener = $e->getConfigListener();
$config = $configListener->getMergedConfig(false);
// Modify the configuration; here, we'll remove a specific key:
if (isset($config['router']['routes']['your_route'])) {
unset($config['router']['routes']['your_route']);
}
// Pass the changed configuration back to the listener:
$configListener->setMergedConfig($config);
}
}
这只是一个例子。您需要将yout_route
更改为表示/user/list
的数组部分
可能重复->您是否已在ZfcUserlist中搜索字符串列表
?他们可能有一个设置列表的配置文件。如果你发现了,我想你可以覆盖路线的名称。另一个选项是配置ZfcUserlist模块,给它一个路由前缀。这样的东西可能存在。+我链接的答案可能不清楚,但你在找这个->@AndreschSerj是的,我当然能找到字符串。我也可以覆盖路由,但是我想完全删除它@克里斯普:你的第二个答案很有帮助。我认为这样的事情是可能的。我走这边。但是,在配置文件中是否有这样做的方法?例如,通过将路由设置为NULL
?这将是easier@faileN当您将合并配置作为一个整体来看时,假设一个null值意味着应该删除该键不是很可靠。密钥可能是必需的,空值可能对某些配置规范有效。我认为有文档记录的解决方案是最好的解决方法。