重定向:to()和Redirect :: route()有什么区别?

时间:2014-08-03 05:31:07

标签: php redirect laravel-4

我正在学习laravel 4。

我的路线档案的代码:

Route::post('user/admin', 'UserController@admin');
Route::get('user/login', 'UserController@login');
Route::resource('user', 'UserController');

Route::get('/', function()
{
    return View::make('home');
});

我的控制器的代码:

public function admin() {
    $msg = Usr::get_data();

    if ($msg == "pass") {
        return View::make('user.admin');
    } else {
        return Redirect::to('user/login');
    }
}

当我使用Redirect :: to时没有问题,但如果我改为Redirect :: route,则表示路由[user / login]未定义。但我已经在routes.php中定义了它。为什么重定向::()不起作用,它们之间有什么区别?

2 个答案:

答案 0 :(得分:4)

Redirect::route用于named route,而Redirect::to用于任何内部重定向。您添加的所有路线均未命名,因此您无法使用Redirect::route来引用它们。

答案 1 :(得分:0)

Redirect::to retrurns a redirect with the flash data

文档中的一个例子

return Redirect::to('user/login')->with('message', 'Login Failed');

Redirect::route返回重定向到命名路线时。

return Redirect::route('profile', array(1));

检查documentation。这会让您更好理解。

编辑:

Redirect::route() can redirect with a flash data too.