【问题标题】:laravel routes: changeing order of variableslaravel 路线:改变变量的顺序
【发布时间】:2017-03-24 09:31:29
【问题描述】:

我试图在控制器中为同一个动作添加两个不同的路由,但我需要在中间提供空值。

路线:

Route::get('post/get-ajax-posts/start/{start}/profile/{profileid}', 'PostController@getAjaxPosts');    
Route::get('post/get-ajax-posts/start/{start}/tag/{tagName}', 'PostController@getAjaxPosts');

控制器:

public function getAjaxPosts(Request $request, $startRow, $profile = null, $tagName = null){}

我想在第二条路线中提供 $profile = null 但我得到 $profile = {tagName}

我该怎么做?

我发现的唯一方法是在控制器中添加:

      $routeParameters = $this->getRouter()->getCurrentRoute()->parameters();
      if(isset($routeParameters['tagName']) && $routeParameters['tagName']){
            $tagName = $routeParameters['tagName'];
            $profile = null;
        }

有没有更简单的方法?

【问题讨论】:

  • 你可以使用?作为可选参数,比如'user/{name?}'
  • 恕我直言,他们似乎有两条不同的路线,有两个不同的函数调用。如果逻辑相同,您可以拥有一个检索参数并调用另一个函数的函数。我不认为可选参数是您编写路由时适用的解决方案。
  • 您能否发布您的整个控制器方法,因为可能有一种更简洁的方法来实现您所追求的目标?另外,您是否必须使用相同的路线,即您要添加到现有代码中?
  • 当然我可以通过几种不同的方式做到这一点,也许我会做到,但问题是,有没有办法在路由中注入这个空值?

标签: php laravel laravel-5.2


【解决方案1】:

很简单的兄弟

在公共函数中获取你所有的路由变量

public function getAjaxPosts(Request $request){
$startRow   =  $request['startRow'];
$profile    = null ; 
$tagName    = null ;
}

【讨论】:

  • POST 方法是这样工作的,对于 GET 你必须调用$routeParameters = $this->getRouter()->getCurrentRoute()->parameters();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2016-10-24
相关资源
最近更新 更多