簡體   English   中英

如何在同一個 controller (laravel) 中的函數之間傳遞變量?

[英]how can i pass a variable between functions in the same controller (laravel)?

我是 laravel 的新手,這是我第一次使用 stackoverflow,如果我犯了一些錯誤,請原諒我。 我需要將$newOrder傳遞給視圖(orders.success),以便在訂單結束后能夠打印“收據”。 似乎沒有任何效果,我嘗試過使用 compact/with 方法,但它總是未定義,因為$newOrder在另一個 function 中聲明。 你有什么建議嗎?

    class BraintreeController extends Controller
{

    public function token(Request $request)
    {

        $gateway = new \Braintree\Gateway([
            'environment' => 'sandbox',
            'merchantId' => 'jgvy755pfvwdcjzx',
            'publicKey' => 'qqpm93srfgwtx6dp',
            'privateKey' => 'd13ce21a7642606db73b12bb1300d3fd'
        ]);

        $clientToken = $gateway->clientToken()->generate();

        if ($request->input('nonce') != null) {
            $request->validate([
                'name' => 'required',
                'last_name' => 'required',
                'phone' => 'required',
                'address' => 'required',
                'email' => 'email:rfc',
            ]);

            //# Storo l'ordine
            $name = $request->input('name');
            $last_name = $request->input('last_name');
            $address = $request->input('address');
            $phone = $request->input('phone');
            $email = $request->input('email');
            $arr_id = $request->input('arr_id');
            $arr_quant = $request->input('arr_quant');
            $delivery_fee = $request->input('delivery_fee');
            //# Recupero tutti i piatti dell'ordine per calcolarne il totale
            $dishes = Dish::findMany($arr_id);
            $arrayLength = count($arr_id);
            $amount = 0;
            for ($i = 0; $i < $arrayLength; $i++) {
                $amount +=  $dishes[$i]->price * $arr_quant[$i];
            }
            $amount += $delivery_fee;

            //#


            $newOrder = new Order();
            $newOrder->status = 1;
            $newOrder->address = $address;
            $newOrder->user_name = $name;
            $newOrder->user_surname = $last_name;
            $newOrder->phone = $phone;
            $newOrder->email = $email;
            $newOrder->total = $amount;
            $newOrder->save();

            // // storo l'array di IDs


            // Ciclo una volta per ogni piatto contenuto nell'ordine, salvo la relazione e la sua quantità
            for ($i = 0; $i < $arrayLength; $i++) {
                $dish_id = $arr_id[$i];
                // Scrive nella tabella pivot dopo aver creato la relazione
                $newOrder->dishes()->attach([$dish_id => ['quantity' => $arr_quant[$i]]]);
                //
            }

            //#


            var_dump($request->input('nonce'));
            $nonceFromTheClient = $request->input('nonce');
            $gateway->transaction()->sale([
                'amount' => $amount,
                'paymentMethodNonce' => $nonceFromTheClient,
                'options' => [
                    'submitForSettlement' => True
                ]
            ]);


            Mail::to($email)->send(new PaymentConfirmationMail());
            return view('orders.success');
        }


        return view('orders.braintree', ['token' => $clientToken]);
    }

    public function success(Request $request)
    {
        return view('orders.success');
    }
}

嘗試這個

Mail::to($email)->send(new PaymentConfirmationMail());
return view('orders.success',['newOrder' => $newOrder]);

或者像這樣更改成功 function 的參數

public function success($newOrder)
{
    return view('orders.success', ['newOrder' => $newOrder]);
}

並從預覽中返回 function

Mail::to($email)->send(new PaymentConfirmationMail());
return $this->success($newOrder);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM