Laravel重定向

Laravel重定向

重定向至命名路由

命名路由用于给出具体的名字命名到一个路由。名称可以使用“作为”数组键来被分配。

Route::get('user/profile', ['as' => 'profile', function () {
   //
}]);
注 - 在这里,我们命名为“profile”到路由“user/profile”。

示例

第1步 - 创建一个名为 test.php 的视图,并将其保存在resources/views/test.php。
<html>
   <body>
      <h2>Example of Redirecting to Named Routes</h2>
   </body>
</html> 

第2步 - 在 routes.php 文件中,我们已经创建了 test.php 文件的路由,把它重新命名为 “testing”。我们还建立了一个路由 “redirect”,这将请求重定向到指定路由“testing”。

app/Http/routes.php

Route::get('/test', ['as'=>'testing',function(){
   return view('test');
}]);
Route::get('redirect',function(){
   return redirect()->route('testing');
});
第3步 - 访问以下网址测试命名的路由例子。

http://localhost:8000/redirect

第4步 - 上面的URL执行后,因为我们重定向到 http://localhost:8000/test 同时你会被重定向到命名路由 "testing"。

第5步 - URL的成功执行后原来的URL会跳转到  http://localhost:8000/test,您会收到以下输出 -

重定向到控制器动作

不仅命名的路由,但我们也可以重定向到控制器动作。我们只需要简单将控制器和动作名称传递给动作方法,如下面的例子所示。如果想传递一个参数,那可以把它作为操作方法的第二个参数传递。

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

示例

第1步- 执行以下命令来创建一个名为 RedirectController。
php artisan make:controller RedirectController
第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('reindex','RedirectController@index');
Route::get('/redirectcontroller',function(){
   return redirect()->action('RedirectController@index');
});
第5步 - 请访问以下网址进行测试例子。

http://localhost:8000/redirectcontroller

第6步 - 输出结果如下图所示。