我在我继承的网站上工作并且在路由到控制器时遇到了一些麻烦。
当我访问网址www.domain.com/banners/statistics时,它不会返回任何内容。
我还注意到,当我尝试通过横幅统计链接到此页面时,这也会在我的主页上出现错误。
routes.php文件
Route::resource('banners', 'BannerController');
Route::get('banners/{banners}/activate', 'BannerController@activate');
Route::get('banners/{banners}/deactivate', 'BannerController@deactivate');
Route::get('banners/{banners}/delete', 'BannerController@delete');
Route::get('banners/{banners}/preview', 'BannerController@preview');
Route::any('banners/{banners}/cropresize', 'BannerController@cropresize');
Route::get('banners/statistics', 'BannerController@statistics');
BannerController.php
public function create()
{
$data['title'] = 'Create Banner';
$data['disciplines'] = Discipline::lists('name', 'id');
return View::make('admin.banners.create', $data);
}
public function statistics()
{
return View::make('admin.banners.statistics');
}
答案 0 :(得分:2)
资源控制器为您提供多条路线。
包括:
GET /resource/{resource}
重定向到控制器的show动作。
所有已创建路线的列表: http://laravel.com/docs/controllers#resource-controllers
所以当你打电话
横幅/统计
Laravel认为你想用“统计”作为参数来调用show动作。
为避免这种情况,您可以将所有自定义路由放在资源控制器路由之上。
Route::get('banners/{banners}/activate', 'BannerController@activate');
Route::get('banners/{banners}/deactivate', 'BannerController@deactivate');
Route::get('banners/{banners}/delete', 'BannerController@delete');
Route::get('banners/{banners}/preview', 'BannerController@preview');
Route::any('banners/{banners}/cropresize', 'BannerController@cropresize');
Route::get('banners/statistics', 'BannerController@statistics');
Route::resource('banners', 'BannerController');
这样,Laravel将在资源控制器创建的路由之前调用您的自定义路由。
如果您不需要某些资源控制器路由,也可以使用only
和except
。
Route::resource('banners', 'BannerController',
array('except' => array('show')));