动作助手和路由优先级 laravel 5
action helper and routing priority laravel 5
我有两条规则
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
Route::controller('ads', 'Ads');
动作('Ads@getIndex')渲染
http://my-awesome-domain/ads
我要
http://my-awesome-domain/this-is-an-awesome-route
有什么问题吗?
第二个路由正在重写第一个路由声明。让我们看看:
// 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
}
出于某种原因,从 Laravel 4.2 到 Laravel 5 逻辑发生了一点变化。你写的那行之前是有效的,你只需要反转一切,因为路由器没有以同样的方式处理你的代码。
经过测试且有效的解决方案
Route::controller('ads', 'Ads');
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
第一条路线将被第二条路线覆盖。
我有两条规则
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
Route::controller('ads', 'Ads');
动作('Ads@getIndex')渲染
http://my-awesome-domain/ads
我要
http://my-awesome-domain/this-is-an-awesome-route
有什么问题吗?
第二个路由正在重写第一个路由声明。让我们看看:
// 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 }
出于某种原因,从 Laravel 4.2 到 Laravel 5 逻辑发生了一点变化。你写的那行之前是有效的,你只需要反转一切,因为路由器没有以同样的方式处理你的代码。
经过测试且有效的解决方案
Route::controller('ads', 'Ads');
Route::get('this-is-an-awesome-route', 'Ads@getIndex');
第一条路线将被第二条路线覆盖。