如何删除覆盖模块上的路由?

时间:2014-04-30 02:42:36

标签: php module routes zend-framework2

我通过Composer将zfcUser模块添加到我的项目中,并在模块ZfcUserOverride中覆盖了它。我想要尾随斜线工作,所以我在覆盖模块中添加了路由。

zfcUserOverride档案module.config.php内容如下:

<?php
$config = array(
    'view_manager' => array(
        'template_path_stack' => array(
            'zfcuser' => __DIR__ . '/../view',
        ),
    ),
    'controllers' => array(
        'invokables' => array(
            'zfcuser' => 'ZfcUserOverride\Controller\UserController',
        ),
    )
);

$config['router']['routes']['zfcuser']['child_routes']['trailing_slash'] = array(
    'type' => 'Literal',
    'options' => array(
        'route' => '/',
        'defaults' => array(
            'controller' => 'zfcuser',
            'action'     => 'index',
        ),
    ),
);

return $config;

我添加了新的路径,一切正常。

但如果我想删除路线怎么办?这该怎么做?我需要一些想法:

$config['router']['routes']['zfcuser']['child_routes']['login'] = null;

请帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

zfcUserOverride中,您需要覆盖路线配置,而不是添加新路线。

在定义路线时,可以使用相同数组键轻松完成此操作。

例如;我是否应该修改login路由以允许使用额外的斜杠:

// zfcUserOverride/config/module.config.php
'router' => array(
    'routes' => array(
        'zfcuser' => array(
            'child_routes' => array(
                'login' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' => '/login[/]',
                    ),
                ),
             ),
         ),
    ),
);

内部ZF2将使用array_replace_recursive()将所有模块配置合并/合并为一个完整的阵列。因此,匹配的配置键将被后面加载的模块替换。

因此,您还需要确保在application.config.php

中正确配置了它
array(
    'modules' => array(
        //...
        'ZfcUser',
        'ZfcUserOverride', // Loads after
        // ... 
    ),
);

答案 1 :(得分:-1)

Here答案。

@Sharikov Vladislav,我想对你说点什么。 在this question我回答了你的问题,你选择了一个正确的答案,只需要在10小时后用我的内容更新他的答案。 我不想开始一场火焰战争,我要求的只是对谁用它的时间来帮助你。

而且我认为你必须在发布之前使用搜索引擎,你在为开发过程的每一步提出一个问题,很明显你没有花费精力去自己搜索解决方案。

只是说.. ..

相关问题