【问题标题】:How to set a default action for SocialEngine module如何为 SocialEngine 模块设置默认操作
【发布时间】:2019-03-07 06:09:13
【问题描述】:

我创建了一个带有两个控制器的模块:Index 和 Pay。两个控制器都有动作,即
索引 -> 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+',
        ],
    ],
],

【问题讨论】:

    标签: zend-framework module socialengine


    【解决方案1】:

    路由在每个定义中都应该是唯一的。 :action 表示它可以使用值和空值。如果为空,它将使用默认值。 在您的情况下,最新路线是最重要的。

    尝试删除pay_callback,它会像pay_general一样工作。

    约定是为控制器管理一条路由,并进行相应的管理。

    【讨论】:

    • 我应该把它改成'route' => 'pgateway/controller/action/*'吗?
    • 这将使路由仅可用于一个操作,'route' => 'pgateway/controller/:action/*' >> 这将是此控制器的所有操作。
    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 2020-09-01
    • 2012-12-16
    • 2023-01-29
    • 2013-06-01
    • 2014-07-05
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多