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 后,你将收到以下输出:
重定向到控制器操作
不仅是命名路由,我们还可以重定向到控制器动作。我们需要简单地将控制器和action的名称传递给行动方法,如下例所示。如果你想传递一个参数,你可以把它作为动作方法的第二个参数。
return redirect()->action(‘NameOfController@methodName’,[parameters]);
步骤1: 执行以下命令创建一个名为RedirectController的控制器:
php artisan make:controller RedirectController --plain
步骤2: 执行成功后,会得到如下输出:
步骤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: 输出将如下图所示: