Yii2:如何将对象传递给模块

Yii2: how to pass object to module

假设我正在使用 Yii2 制作电子商务应用程序,并希望将所有支付方式实现为模块。

在用户确认订单后,我想将用户重定向到付款流程。我的 CheckoutController 中有以下代码:

        if($order->save())
        {
            $module = Yii::$app->getModule('payment');
            $module->init();
        }

此时我想与 payment 模块共享当前订单 $order 实例。 这样做的最佳方法是什么?

我查看了文档,但没有找到任何相关内容。

谢谢!

在您的支付模块中创建一个方法 setOrder($order) 来设置当前订单,检查它是否是 Order 的实例等等。

创建另一个类似 process() 的方法来进行支付处理。如果$order设置正确,你应该在这里检查。

然后您可以在 CheckoutController:

if ($order->save())
{
    $module = Yii::$app->getModule('payment');
    $module->init(); // I believe yii calls this automatically
    $module->setOrder($order);
    $module->process();
}