Laravel 重定向


命名路由是用来给一个路由起名的,这个名字可以用数组的"as"键来指定。

Route::get('user/profile', ['as' => 'profile', function () {
    //
}]);

在这里,我们给路由/user/profile起名为profile

重定向到命名路由


观察以下示例以了解有关重定向到命名路由的更多信息:

步骤1: 创建一个名为 test.php 的视图并保存在resources/views/test.php

<html>
    <body>
        <h1>例子 of Redirecting to Named Routes</h1>
    </body>
</html>

步骤2:在routes.php中,我们已经为test.php文件设置了路由,然后把它重命名为testing。我们还设置了另一个路由重定向,将请求重定向到命名的路由testing

Route::get('/test', ['as'=>'testing',function() {
    return view('test2');
}]);

Route::get('redirect',function() {
    return redirect()->route('testing');
});

步骤3: 访问以下网址测试命名路由示例:

http://localhost:8000/redirect

步骤4: 执行完上面的 URL 后,你会被重定向到 http://localhost:8000/test 因为我们正在重定向到命名路由testing

步骤5: 成功执行该 URL 后,你将收到以下输出:

Virat Gandhi

重定向到控制器操作


不仅是命名路由,我们还可以重定向到控制器动作。我们需要简单地将控制器和action的名称传递给行动方法,如下例所示。如果你想传递一个参数,你可以把它作为动作方法的第二个参数。

return redirect()->action(‘NameOfController@methodName’,[parameters]);

步骤1: 执行以下命令创建一个名为RedirectController的控制器:

php artisan make:controller RedirectController --plain

步骤2: 执行成功后,会得到如下输出:

Redirect Controller

步骤3: 复制以下代码到文件app/Http/Controllers/RedirectController.php中:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class RedirectController extends Controller {
    public function index() {
        echo "Redirecting to controller's action.";
    }
}

步骤4: 在app/Http/routes.php中添加以下代码:

Route::get('rr','RedirectController@index');
Route::get('/redirectcontroller',function() {
    return redirect()->action('RedirectController@index');
});

步骤5: 访问以下网址测试示例:

http://localhost:8000/redirectcontroller

步骤6: 输出将如下图所示:

RedirectController.jpg