帮助文件中的重定向在Laravel中不起作用

时间:2018-05-23 10:01:15

标签: php laravel redirect laravel-5

帮助文件中的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()时获取空白页而不是重定向到指定的网址。

3 个答案:

答案 0 :(得分:0)

这是因为通过在函数内调用redirect()不起作用。就像Quezler所说的那样,它需要返回浏览器。

答案 1 :(得分:0)

我遇到了这个问题-不想让每个控制器操作都担心该帮助程序会处理什么,因此我认为“需要返回浏览器”可以通过完成echoexit;


// 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();
}