我有这两条路线:
GET|HEAD | tournaments/{tournament}/users | tournaments.{tournament}.users.index | App\Http\Controllers\TournamentUserController@index |
POST | tournaments/{tournament}/users | tournaments.{tournament}.users.store | App\Http\Controllers\TournamentUserController@store |
我需要打电话:
$breadcrumbs->push(trans('crud.add_competitors'), route('tournaments.users.index', $tournament->id));
但我收到错误:
route('tournaments.users.index', $tournament->id)
错误是:
Route [tournaments.users.index] not defined.
拨打这条路线的方法是什么?
答案 0 :(得分:1)
路由名称是文字的,所以它应该是这样的:
route('tournaments.{tournament}.users.index', $tournament->id)
如果您可以:tournaments.users.index
,我建议您更改名称。您的路径名称不需要包含参数。实际上,他们不能在其中加入论据。你的uri,控制器等接受参数。路线名称实际上只是路线的“名称”/直观描述。
答案 1 :(得分:0)
我认为在路线名中使用参数并不好。如果你使用这个
route('tournaments.users.index', ['tournament'=>$tournament->id])
然后,你的路线必须我
Route::get('/tournaments/{tournament}/users',array(
'as'=>'tournaments.users.index',
'uses'=>'TournamentUserController@index'
));
答案 2 :(得分:0)
尝试在laravel中实现命名路由的概念:
https://laravel.com/docs/5.2/routing#named-routes
您案件中的路线变为:
Route::get('tournaments/{tournament}/users', ['as' => 'tournaments.users.index', 'uses' => 'TournamentUserController@index']);
现在您可以将此路线称为:
route('tournaments.users.index', ['tournament' => $tournament->id]);
希望这能帮到你!
答案 3 :(得分:-1)
您使用命名路由,但您的命名路由定义为
tournaments.{tournament}.users.index
但你用
打电话给路线 route('tournaments.users.index', $tournament->id)
您需要将路线名称更改为tournaments.users.index
答案 4 :(得分:-1)
嘿,如果你有两个控制器就像这样使用
Route::resource('tournaments','TournamentController');
Route::resource('users','UserController');
这将为您提供您所要求的路线:)