Route::get('this-is-an-awesome-route', 'Ads@getIndex');
Route::controller('ads', 'Ads');
http://my-awesome-domain/ads
http://my-awesome-domain/this-is-an-awesome-route
有什么问题?
答案 0 :(得分:1)
第二条路线是重写第一条路线声明。我们来看看:
// Ads@getIndex will be called
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
// Ads@getIndex will be called too by native definition
Route::controller('ads', 'Ads');
由于Route::controller('ads', 'Ads')
被称为最新声明,它将覆盖前一个声明。因此,您至少有两种方法可以完成此任务
你可以在Ads
控制器中创建一个新函数,只是为了响应第一条路线:
Route::get('this-is-an-awesome-route', 'Ads@awesome');
然后:
public function awesome(){
// do stuff here
}
重命名控制器的路径名称
Route::controller('ads', 'Ads', [
'getIndex' => 'ads.getHome',
]);
现在,您的Route::controller('ads', 'Ads');
将根据重命名的路由回复getHome()
而不是getIndex()
:
public function getHome(){
// do stuff for getIndex() definitions here
}
答案 1 :(得分:1)
出于某种原因,从 Laravel 4.2 到 Laravel 5 ,逻辑发生了一些变化。您之前编写的这一行正在使用,您只需要反转所有内容,因为路由器不会以相同的方式处理您的代码。
Route::controller('ads', 'Ads');
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
第一条路线将被第二条路线覆盖。