[英]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.