我以为我控制了路由,直到我发现我现在已经知道如何更改默认操作网址,这意味着: 当用户输入网址时,例如:
路由将始终将他重定向到默认操作“show”(此控制器具有的许多操作之一):
但我的网址仍然相同(使用“show”操作):
我在这里缺少什么?
'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标记)我有一些错误/错误解释试图解释问题,所以我编辑了主要问题的例子。
再次感谢所有人!
答案 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',
),
希望如果我没有帮助,这会有所帮助和抱歉。