帮助文件中的redirect()辅助函数在Laravel中不起作用。
这是我的代码helpers.php
if (! function_exists('license_check')) {
function license_check(){
//This does not work, returns a blank page
return redirect()->route('loginlicense');
//This does not work, returns a blank page
return \Redirect::route('loginlicense');
//This work but it prints on the browser before redirecting
echo \Redirect::route('loginlicense');
echo redirect()->route('loginlicense');
//This work but it prints on the browser before redirecting
die(\Redirect::route('loginlicense'));
die(redirect()->route('loginlicense'));
//The below works. But I would like to pass laravel flash sessions with `Laravel's with('status', 'My mesage')`
$url = route('loginlicense');
header("Location: ".$url);
exit();
}
}
license_check();
为什么我会在使用Redirect::
或redirect()
时获取空白页而不是重定向到指定的网址。
答案 0 :(得分:0)
这是因为通过在函数内调用redirect()不起作用。就像Quezler所说的那样,它需要返回浏览器。
答案 1 :(得分:0)
我遇到了这个问题-不想让每个控制器操作都担心该帮助程序会处理什么,因此我认为“需要返回浏览器”可以通过完成echo
和exit;
// Redirect to the login?
if (empty($admin) || empty($token)) {
// I have to echo the redirect in order to return the response from here.
echo redirect('/admin/login');
exit;
}
答案 2 :(得分:0)
您可以在控制器中处理重定向。辅助函数返回一个布尔值,或者可能抛出异常。
helper.php
if (! function_exists('license_check')) {
function license_check($id) {
if($id == 2){
return true;
} else {
return false;
}
}
}
HomeController.php
use Session;
$check_lic = license_check(2);
if($check_lic) {
session()->flash('success', 'Your message!');
return redirect()->route('loginlicense');
} else {
session()->flash('error', 'you have not purchase licence!');
return redirect()->back();
}