如何从一个 blade 视图重定向到另一个 blade 视图,并将动态生成的变量传递给它?
How to redirect from one blade view to another blade view, and pass dynamically generated variable to it?
在我看来,让我们称之为 View-A,我在提示中从用户那里获得输入并将其分配给一个变量,然后我需要在浏览器中加载另一个视图,比如视图 B,而将那个变量传递给它。
比如说,在我的 viewA.blade.php
中,我已经获取了用户的输入并将其分配给变量 usersInput
。现在我需要将它发送到视图 B,其在 web.php 中的路由定义在 Route::get('editRecord', 'MyController@displayEditRecordView')->name('editRecordFormView');
.
问题是如何在浏览器中加载 route(editRecordFormView
) 并将 usersInput
变量传递给它,从 blade 视图中编写的 javascript?
@Tushar 在我的ViewA.blade.php:
$.ajax({
url: url_editRecordView.url,
data: {
usersInput: dataToSend.usersInput,
},
method: "get",
cache: false,
success: function (dataReturned, stringStatus, jqXHR) {
console.log("dataReturned from mYController.displayEditRecordFormView:-");
console.log(dataReturned);//check
console.log("Type of dataReturned:-" + typeof dataReturned); //SAME DATA COMES BACK, AS THE DATA I SENT
},
error: function (jqXHR, stringStatus, stringExceptionThrown) {
alert("Error! status: " + stringStatus + " ExceptionThrown: " + stringExceptionThrown);//check
}
});
在我的控制器中:
public function displayEditRecordFormView (Request $request) {
error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
$title= $request->input('usersInput');
error_log("In displayEditRecordFormView: title: ".$title);//check
$allPaintingsArray = $this->getAllPaintingsArraySanitized();
$data = [
"allPaintingsArray"=>$allPaintingsArray ,
"title"=>$title
];
return view("paintings.editRecordForm")->with("allGoodData", $data);
}
你可以利用AJAX。只需为用户提供输入时设置一个事件处理程序,并通过 AJAX 将包含用户输入的请求发送到 View-A 控制器中的方法,然后您可以从那里重定向到 View-B 以及值你从请求中得到的。
已编辑
不要使用 view() 方法,而是尝试使用 redirect() 方法,如下所示:
return redirect()->route('editRecordFormView', ['input' => 'userInput']);
要了解有关重定向的更多信息,请参阅 this
而不是 AJAX 调用为什么不使用这样的东西:
var url = "/editRecord?usersInput=dataToSend.usersInput;
window.location.href = url;
在控制器中捕获变量:
$title= request()->filled('usersInput');// or find a way according to Laravel version
在我看来,让我们称之为 View-A,我在提示中从用户那里获得输入并将其分配给一个变量,然后我需要在浏览器中加载另一个视图,比如视图 B,而将那个变量传递给它。
比如说,在我的 viewA.blade.php
中,我已经获取了用户的输入并将其分配给变量 usersInput
。现在我需要将它发送到视图 B,其在 web.php 中的路由定义在 Route::get('editRecord', 'MyController@displayEditRecordView')->name('editRecordFormView');
.
问题是如何在浏览器中加载 route(editRecordFormView
) 并将 usersInput
变量传递给它,从 blade 视图中编写的 javascript?
@Tushar 在我的ViewA.blade.php:
$.ajax({
url: url_editRecordView.url,
data: {
usersInput: dataToSend.usersInput,
},
method: "get",
cache: false,
success: function (dataReturned, stringStatus, jqXHR) {
console.log("dataReturned from mYController.displayEditRecordFormView:-");
console.log(dataReturned);//check
console.log("Type of dataReturned:-" + typeof dataReturned); //SAME DATA COMES BACK, AS THE DATA I SENT
},
error: function (jqXHR, stringStatus, stringExceptionThrown) {
alert("Error! status: " + stringStatus + " ExceptionThrown: " + stringExceptionThrown);//check
}
});
在我的控制器中:
public function displayEditRecordFormView (Request $request) {
error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
error_log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//check
$title= $request->input('usersInput');
error_log("In displayEditRecordFormView: title: ".$title);//check
$allPaintingsArray = $this->getAllPaintingsArraySanitized();
$data = [
"allPaintingsArray"=>$allPaintingsArray ,
"title"=>$title
];
return view("paintings.editRecordForm")->with("allGoodData", $data);
}
你可以利用AJAX。只需为用户提供输入时设置一个事件处理程序,并通过 AJAX 将包含用户输入的请求发送到 View-A 控制器中的方法,然后您可以从那里重定向到 View-B 以及值你从请求中得到的。
已编辑
不要使用 view() 方法,而是尝试使用 redirect() 方法,如下所示:
return redirect()->route('editRecordFormView', ['input' => 'userInput']);
要了解有关重定向的更多信息,请参阅 this
而不是 AJAX 调用为什么不使用这样的东西:
var url = "/editRecord?usersInput=dataToSend.usersInput;
window.location.href = url;
在控制器中捕获变量:
$title= request()->filled('usersInput');// or find a way according to Laravel version