Php Laravel 7 redirect away在白色页面上显示重定向url
我正在从Laravel 7控制器重定向,它在重定向到url之前显示了重定向url。我正在使用以下代码:Php Laravel 7 redirect away在白色页面上显示重定向url,php,laravel,curl,laravel-5,laravel-7,Php,Laravel,Curl,Laravel 5,Laravel 7,我正在从Laravel 7控制器重定向,它在重定向到url之前显示了重定向url。我正在使用以下代码: private function createPayment($session_token) { ... try { $response = Http::timeout(30)->withHeaders($headers)->post($url, $body)->json(); if ($response['statusCo
private function createPayment($session_token)
{
...
try {
$response = Http::timeout(30)->withHeaders($headers)->post($url, $body)->json();
if ($response['statusCode'] != '0000') {
$this->redirectError($response['statusCode'], $session_token);
}
$url= $response['bkashURL'];
redirect()->away($url)->send();
} catch (\Throwable $th) {
$this->redirectError($response['statusCode'], $session_token);
}
}
//重定向错误方法:
private function redirectError($code, $session_token = null)
{
if ($session_token != null) {
session()->forget($session_token);
}
$message = $this->error($code);
$url = config('global.api_url_bkash') . 'error/' . $message;
redirect()->away($url)->send();
}
private function error($code)
{
switch ($code) {
case '2001':
return 'Invalid App Key';
break;
case '2002':
return 'Invalid Payment ID';
break;
.....
}
//错误方法:
private function redirectError($code, $session_token = null)
{
if ($session_token != null) {
session()->forget($session_token);
}
$message = $this->error($code);
$url = config('global.api_url_bkash') . 'error/' . $message;
redirect()->away($url)->send();
}
private function error($code)
{
switch ($code) {
case '2001':
return 'Invalid App Key';
break;
case '2002':
return 'Invalid Payment ID';
break;
.....
}
我明白了:
如何防止页面不显示url。不要使用
send
方法,只需从controller方法返回响应对象即可
公共功能索引()
{
// ...
$url=config('global.api_url');
return redirect()->away($url);
}
您的代码在哪里?在控制器中?为什么要调用send
?只需返回响应,框架处理将其转换为适当的响应。此处您没有“返回”任何内容。请显示您的redirectError()
函数是的,我需要重定向而不返回任何内容。此代码正在运行。唯一的问题是它在重定向之前会显示URL几秒钟@Lagbox已尝试不发送,但它不起作用。你可以检查我编辑的问题@zlodescreatePayment
方法在哪里?我认为它不是一个控制器方法(因为它是私有的)。或者从其他控制器方法调用它。在这种情况下,您应该从createPayment
返回url
,并在目标控制器方法中返回redirect()->away($url)
。您需要从routes列表中引用的方法返回响应对象。redirect()->away(“…”)->send()
即使不是最佳实践,也可以工作。我首先尝试使用return语句,如下所示:redirect()->away($url)->send()代码>但是当URL出现时,我删除了return语句。我有一些公共方法,但我有一些私有方法,其中该方法在同一个控制器中进行一些计算。删除send()
调用。2.在私有方法中添加return语句(用于try和catch块)。3.在公共方法中添加return语句。