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

时间:2015-05-21 12:06:33

标签: yii2 yii2-advanced-app

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

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

在您的付款模块中,创建方法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();
}