我正在嘗試從控制器傳遞一個請求,但由于我不明白資料根本沒有被傳遞到視圖的原因,我得到了Undefined variable: request. 我已經確認,直到重定向到操作,請求都填充了所有其他變數,所以問題必須在那之后。
制造商控制器
public function decode(Manufacturer $manufacturer, Request $request) {
$validated = $request->validate([
"id" => ["required","min:5","max:30", "alpha_num"],
"email" => ["email","required","max:255"]
]);
$request->merge([
"manufacturer" => $manufacturer
]);
// Pass the Request to the Manufacturer model and return a modified version of it
$request = $manufacturer->oneplus($request);
return redirect()->action([TransactionController::class, "index"])->with($request);
}
abort(404);
}
制造商型號:
public function oneplus($request) {
$id = $request->id;
/* BUSINESS LOGIC THAT GENERATES $new FROM $id... */
$request->merge([
'new' => $new
]);
return $request;
}
web.php 中的路由
Route::get('/payment', [TransactionController::class, "index"]);
事務控制器:
public function index()
{
return view('payment');
}
payment.blade.php
{{ dd($request->new) }}
uj5u.com熱心網友回復:
使用重定向時的問題是重定向會導致一個全新的請求發生。使用時,redirect()->with('variable', 'value')您需要使用以下方法訪問該變數:
session('variable')`
原因是變數通過會話“閃爍”到下一個請求(實際上它不會發送到下一個請求,它僅可用于通過會話的下一個請求然后消失)。
雖然這可能是解決您的問題的簡單方法,但更好的解決方案是盡可能不使用重定向。這是替代方案的簡化:
制造商控制器:
public function decode(Manufacturer $manufacturer, Request $request) {
$validated = $request->validate([
"id" => ["required","min:5","max:30", "alpha_num"],
"email" => ["email","required","max:255"]
]);
$request->merge([
"manufacturer" => $manufacturer
]);
// Pass the Request to the Manufacturer model and return a modified version of it
$request = $manufacturer->oneplus($request);
$transactionController = app()->make(TransactionController::class);
return $transactionController->index($request);
}
事務控制器:
public function index(Request $request)
{
return view('payment')->with("request", $request);
}
這將在同一請求中呼叫另一個控制器方法。
uj5u.com熱心網友回復:
您需要對 TransactionController 和 ManufacturerController 進行一些更改才能使其正常作業
事務控制器:
public function index(Request $request)
{
return view('payment', [
'request' => $request->session()->get('request')
]);
}
制造商控制器:
public function decode(Manufacturer $manufacturer, Request $request) {
$validated = $request->validate([
"id" => ["required","min:5","max:30", "alpha_num"],
"email" => ["email","required","max:255"]
]);
$request->merge([
"manufacturer" => $manufacturer
]);
// Pass the Request to the Manufacturer model and return a modified version of it
$request = $manufacturer->oneplus($request);
return redirect()->action([TransactionController::class, "index"])->with('request', $request->all());
}
abort(404);
}
uj5u.com熱心網友回復:
您可以像這樣通過
ManufacturerController :
return redirect()->action(
[TransactionController::class, "index"],
['data' => $request]
);
web.php 中的路由
// ? = Optional
Route::get('/payment/{data?}', [TransactionController::class, "index"]);
事務控制器:
public function index($data)
{
return view('payment');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430328.html
