【问题标题】:zend framework 2 default routing action change url to default actionzend 框架 2 默认路由操作将 url 更改为默认操作
【发布时间】:2013-12-29 10:31:06
【问题描述】:

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

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

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

http://www.mysite.com/form/myform/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 标记)我在试图解释问题时遇到了一些错误/误解,因此我编辑了主要问题示例。

再次感谢大家!

【问题讨论】:

  • 您的路由器配置似乎一切正常。控制器代码中是否有任何重定向?
  • 代码中有一个重定向,只有当用户登录时才会发生这种情况:'$this->redirect()->toRoute('form',array('form' =>$ this->form->id, 'action' => 'status')'
  • 是完整的路由器配置吗?

标签: php zend-framework2


【解决方案1】:

在你的问题中看这个/

http://www.mysite.com/controller

我希望您的路由器配置会引发 404 错误,因为您的配置中没有匹配的路由与 /controller 匹配(如果除了您在问题中显示的路由之外还有更多路由,请告诉我们或者你可能打错了这个网址)。

除了上面,

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

 http://yoursite/form OR

 http://yoursite/form/controller

转到您在默认值中提到的控制器操作,因为路由与 url 匹配,但没有完全匹配到操作,因此使用默认值。 不存在的控制器或不存在的操作应该抛出 404。例如

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

即使是这个网址

http://yoursite/form/

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

对于您的问题,如果您想将默认操作更改为“显示”操作以外的其他内容,只需更改默认操作参数/键

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

希望这能有所帮助,如果我没有帮助,我们深表歉意。

【讨论】:

  • 你是对的,我对我的问题有一些误解。因此,我已经编辑了我的主要问题,希望你能再看看这个。 ——谢谢!
  • @amitben 嘿!你能解决你的问题吗?可以按照答案中所述更改默认动作控制器
猜你喜欢
  • 2015-04-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多