ZF2 fromRoute不返回默认动作名称

时间:2014-10-09 09:36:19

标签: php zend-framework2 zend-framework-routing

我打算创建一个这样的链接:

  

somesite.com/management/users/index/delete/10

其中管理是模块名称,用户是控制器,索引是动作名称,delete是获取记录id的参数。 要创建此链接,我使用的是此部分代码:

        $delUrl = $this->url()->fromRoute('management-users', array(
                'controller' => 'users',
                'action' => 'index',
                'delete' => $siteData['id'],
        ));

我的配置如下:

    'router' => array(
    'routes' => array(
        'management-index' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/management[/:controller][/:action][/delete/:delete][/:id]',
                'constraints' => array( 
                    'delete'    => '[0-9]+' ,
                    'id'    => '[0-9]+' 
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'Management\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index' 
                ),
            ), 
        ),

    ),
), 

结果如下:

  

somesite.com/management/users/delete/10

该函数省略了动作名称,因为它是我的默认动作,然后将删除作为动作名称,我最终得到404错误。如你所见,我有一个参数" id"这不允许我省略短语"删除"来自链接。通过省略"删除"从url,ZF2得到输入" id"而不是"删除"。我也无法更改默认操作。 有没有办法告诉ZF2在url中输入动作名称?

1 个答案:

答案 0 :(得分:0)

从" management-index"重命名路由密钥。到"管理用户" 从"索引"更改控制器名称到"用户" 所以这条路线的内容如下:

'router' => array(
    'routes' => array(
        'management-users' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/management[/:controller][/:action][/delete/:delete][/:id]',
                'constraints' => array( 
                    'delete'    => '[0-9]+' ,
                    'id'    => '[0-9]+' 
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'Management\Controller',
                    'controller'    => 'Users',
                    'action'        => 'index' 
                ),
            ), 
        ),

    ),
), 

不要忘记更改控制器定义(可调用或工厂)以反映此更改。