简体   繁体   中英

How to remove route in ZF2?

I've installed the following modules into my ZF2-Application: ZfcUser , ZfCAdmin and ZfcUserlist . Though my problem is more general, I just want to make clear what I am trying to do.

The zfcadmin -route is /admin . The zfcuser -route is /user . The ZfcUserlist-modules is shipped with a child-route for zfcuser , is named zfcuserlist and points to /user/list .

Instead of /user/list I want to call the user list by /admin/user . That of course is no problem, I just registered a child-route for zfcadmin .

Now I want to remove the default route for the user list which is shipped with the module. So my question is: How can I unregister/remove a certain route within ZF2?

To clear things up, I've got the following paths:

/admin
/admin/user   <- I added this one
/user/list    <- This comes shipped with the ZfcUserlist-module. I want to remove it

Any suggestions?

To achieve what you want you need this in 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);
    }
}

It is just example. You need to change yout_route to that part of array, which represents /user/list .

Source

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM