【发布时间】: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