问题标题是我能想到的最明确的,但为了清楚起见,这里有一个用例/示例:
假设我定义了以下路由来显示一篇文章:
Route::get('article/{slug}/{id}', 'ArticleController@show');
...
class ArticleController extends BaseController {
public function show($id)
{
return View::make('article')->with('article', Article::find($id));
}
}
这是行不通的,因为 show
会将 $id
参数误认为是 $slug
参数。有没有办法只将 $id
参数传递给 show
方法?
最佳答案
我不知道你是否还在寻找解决方案,但由于我遇到了同样的问题并且我不喜欢这些解决方案,所以我这样做了:
在您的 ArticleController
中,您重载了 callAction($method, $parameters)
方法,这是 Laravel Controller 类中的一个方法,所以它看起来像这样:
public function callAction($method, $parameters)
{
unset($parameters['id']);
unset($parameters['slug']);
return parent::callAction($method, $parameters);
}
在此之后你可以轻松地做到这一点:
public function show($id)
{
return View::make('article')->with('article', Article::find($id));
}
关于php - 是否可以重新排序或忽略 Controller 路由中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789577/