zend framework 2默认路由操作将url更改为默认操作

时间:2013-12-29 10:31:06

标签: php zend-framework2

我以为我控制了路由,直到我发现我现在已经知道如何更改默认操作网址,这意味着: 当用户输入网址时,例如:

  

http://www.mysite.com/form/myform

路由将始终将他重定向到默认操作“show”(此控制器具有的许多操作之一):

  

http://www.mysite.com/form/myform/show

但我的网址仍然相同(使用“show”操作):

  

http://www.mysite.com/form/myform

我在这里缺少什么?

        'routes' => array(
        'form' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/form[/:form[/:action]]',
                'constraints' => array(
                    'form'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                ),
                'defaults' => array(
                    'controller' => 'Form\Controller\Form',
                    'action'     => 'show',
                ),
            ),
        ),
    ),

谢谢!

已编辑的说明:

我注意到(感谢@codeHeart标记)我有一些错误/错误解释试图解释问题,所以我编辑了主要问题的例子。

再次感谢所有人!

1 个答案:

答案 0 :(得分:0)

在你的问题/

中查看此内容
http://www.mysite.com/controller

和你的路由器配置我希望应该抛出404错误,因为你的配置中没有与匹配/控制器相匹配的路由(如果除了你在问题中显示的路径之外还有更多路由,请告诉我们或者你错了这个网址。)

除此之外,

您的路线告诉您执行以下操作: - 如果网址是

 http://yoursite/form OR

 http://yoursite/form/controller

转到您在默认设置中提到的控制器操作,因为路径已与网址匹配但未完全匹配操作,因此转到默认设置。 不存在的控制器或不存在的操作应该抛出404.例如

 http://yoursite/form/controller/non-existing-action

即便是这个网址

http://yoursite/form/

根据您的路线不会匹配,并且会抛出404。

对于您的问题,如果您想将默认操作更改为“show”操作以外的其他操作,只需在默认情况下更改操作参数/键

        'defaults' => array(
            'controller' => 'Form\Controller\Form',
            'action'     => 'some-other-action',
        ),

希望如果我没有帮助,这会有所帮助和抱歉。