我用:
Route::controller('home', 'HomeController');
在我的路线中将所有路线链接到我的控制器。
我的控制器中有getIndex()
功能,当我去'/ home'时执行。
我有一个案例,我想路由到'/ home / slug',但并非总是如此。
我尝试使用getIndex($slug)
,但它总是要求'/ home / index / {slug?}'。我不希望索引出现。
答案 0 :(得分:4)
就文档而言,不可能使用隐式控制器(因为它似乎强制执行RESTFUL模式)。
但是你可以为此创建一条新路线:
Route::get('home/{slug}','HomeController@slugedIndex');
Route::controller('home', 'HomeController');
编辑:正如史蒂夫指出的那样,控制器方法必须在get方法之后,所以不会覆盖另一个。
答案 1 :(得分:4)
Route::get('home/{slug}','HomeController@slugedIndex');
Route::controller('home', 'HomeController');
虽然它不起作用,因为任何事情都是在' home /'之后写的。现在将进入第一条路线(和HomeController @ slugedIndex)。
我找到了一个解决方法。我在routes.php中取出了这条路线:
Route::controller('home', 'HomeController');
然后在我的HomeController中,只要在控制器中找不到方法,我就会调用missingmethod()。
这是缺少的方法:
public function missingMethod($parameters = array())
{
$sSlug = is_string($parameters) ? $parameters : '';
$oObject = Object::where('slug', $sSlug)->first();
if ($oObject) {
// slug code
}
else {
// 404 code
}
}