【问题标题】:Laravel Routing:: check parameter value and redirectLaravel Routing:: 检查参数值并重定向
【发布时间】:2017-03-15 17:36:34
【问题描述】:

我有一个带有一些参数的 GET 类型的路由。例如

Route::get('/my-route/{id}',array('uses'=>'myController@myAction'));

我想检查参数 id 的值,如果这个 id=1 然后重定向到另一个路由,否则继续它。我正在做的是这样的

Route::get('/my-route/{id}',function($id){
    if($id==1){
        return Redirect::to(URL::route('my-another-route'));
    }
    else{
        //What should I do here so my route works as before.
   }
});

在其他部分,我希望我的路由到 myController@myAction 以及参数。

谢谢

【问题讨论】:

  • 这样的东西不应该在路由中控制。我建议您在控制器功能中执行此操作,例如 if($id == 1) return redirect()->route('RouteName');

标签: php laravel-5 routes


【解决方案1】:

你可以这样做:

Route::get('/my-route/{id}',function($id){
    if($id==1){
        return Redirect::to(URL::route('my-another-route'));
    }
    else{
        return app()->call(myController::class, ['id' => $id], 'myAction');
   }
});

【讨论】:

    【解决方案2】:

    让这个工作和路由到您的控制器的最简单方法是将您的 Route 恢复到原来的状态,然后将 if 语句置于控制器条件的顶部:

    public function myAction() {
    
        if ($id == 1) {
            return Redirect::to(URL::route('my-another-route'));
        }
    

    到你的控制器方法的顶部。

    另外,如果您只在路线上使用uses => 'Controller@method',您可以这样做:

    Route::get('/my-route/{id}','myController@myAction');
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 2018-01-22
      • 2020-10-20
      • 2015-12-25
      • 2011-08-26
      • 2016-03-18
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多