我创建了一个带有两个控制器的模块:索引和支付。两个控制器都有动作,即
索引-> indexAction
支付-> indexAction,callbackAction等
我已经在模块的manifest.php中定义了路由,尽管在该文件中定义路由似乎没有什么区别,因为这些路由无论如何都能正常工作。问题是当我浏览模块的根目录,即http://example.com/pgateway时,仅执行第二个控制器中的特定操作(PayController-> callbackAction)。为什么会这样?浏览example.com/pgateway时,如何使IndexController-> indexAction成为默认页面?
我的路线定义(manifest.php):
'routes' => [
'pay_general' => [
'route' => 'pgateway/:controller/:action/*',
'defaults' => [
'module' => 'pgateway',
'controller' => 'pay',
'action' => 'index',
],
'reqs' => [
'controller' => '\D+',
'action' => '\D+',
],
],
'pay_callback' => [
'route' => 'pgateway/:controller/:action/*',
'defaults' => [
'module' => 'pgateway',
'controller' => 'pay',
'action' => 'callback',
],
'reqs' => [
'controller' => '\D+',
'action' => '\D+',
],
],
],
答案 0 :(得分:1)
route应该是唯一的。 :action
表示既可以使用值也可以使用空值。如果为空,将使用默认值。
就您而言,最新路线是最重要的。
尝试删除pay_callback
,它将像在pay_general
中一样工作。
公约是为控制器管理一条路线,并据此进行管理。