0

我知道一个全局变量应该由承包商初始化。如果需要在一个函数中初始化一个全局变量并在另一个函数中访问它怎么办?

这是我的第一个功能

    public $customerId;

    public function store(CheckoutRequest $request)
    {
        try {
            $customer = Stripe::customers()->create([
                                'source' => $request->stripeToken,
                                'email' => $request->email,
                                'description' => $request->name
                            ]);

            **$this->customerId** = $customer->id;
            $this->chargeCustomer($request, $customer->id);
            return redirect()->route('shipper.payment')->with('success_message', 'Thank you! your payment was successfull.');
        } catch (Exception $e) {
            return back()->withErrors('Error! ' . $e->getMessage());
        }
    }

这是我的第二个功能

    public function paymentDetails()
    {
        return $this->customerId;
    }

我在 Stripe 中创建客户并将创建的客户 ID 分配给 $customerId 全局变量,我需要 $customerId 在 paymentDetails 函数中,该函数由另一条路由调用,但 paymentDetails 返回 null。谁能帮忙,如何在其他功能中获取客户ID?

4

1 回答 1

0

如您所描述,如果您paymentDetails()稍后通过另一条路线调用,则将不再设置公共变量。控制器根据请求进行解析,因此它不会为下一个请求存储任何内容。

您最好的选择可能是在您自己的一端存储一些客户,并在下一个请求时使用它来检索 customerId,或者使用https://laravel.com/docs/7.x/session

于 2020-08-11T12:07:14.213 回答