Laravel - 重定向
命名路由用于为路由指定特定名称。可以使用 "as" 数组键分配名称。
Route::get('user/profile', ['as' => 'profile', function () { // }]);
注意 − 在这里,我们为路由 user/profile 指定了名称 profile。
重定向到命名路由
示例
观察以下示例以了解有关重定向到命名路由的更多信息 −
步骤 1 −创建一个名为 test.php 的视图并将其保存在
resources/views/test.php。
<html> <body> <h1>Example of Redirecting to Named Routes</h1> </body> </html>
步骤 2 − 在 routes.php 中,我们为 test.php 文件设置了路由。我们将其重命名为 testing。我们还设置了另一个路由 redirect,它将请求重定向到命名路由 testing。
app/Http/routes.php
Route::get('/test', ['as'=>'testing',function() { return view('test2'); }]); Route::get('redirect',function() { return redirect()->route('testing'); });
步骤 3 − 访问以下 URL 以测试命名路由示例。
http://localhost:8000/redirect
步骤 4 − 执行上述 URL 后,您将被重定向到 http://localhost:8000/test,因为我们正在重定向到命名路由测试。
步骤 5 − 成功执行 URL 后,您将收到以下输出 −
重定向到控制器操作
不仅可以使用命名路由,还可以重定向到控制器操作。我们只需将 action 的控制器和名称传递给操作方法,如以下示例所示。如果要传递参数,可以将其作为操作方法的第二个参数传递。
return redirect()->action('NameOfController@methodName',[parameters]);
示例
步骤 1 − 执行以下命令创建一个名为 RedirectController 的控制器。
php artisan make:controller RedirectController --plain
步骤 2 −执行成功后,您将收到以下输出 −
步骤 3 − 将以下代码复制到文件中
app/Http/Controllers/RedirectController.php.
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 中添加以下几行。
app/Http/routes.php
Route::get('rr','RedirectController@index'); Route::get('/redirectcontroller',function() { return redirect()->action('RedirectController@index'); });
步骤 5 − 访问以下 URL 测试示例。
http://localhost:8000/redirectcontroller
步骤 6 −输出将如下图所示显示。