我想创建3条不同的路线:
Route::get('schedule',['as'=>'schedule.view','uses'=>'ScheduleController@view']);
Route::get('schedule/{year}-{month}',['as'=>'schedule.view','uses'=>'ScheduleController@view'])
->where('year','\d{4}')
->where('month','0[1-9]|1[0-2]');
Route::get('schedule/{year}-{month}-{day}',['as'=>'schedule.view','uses'=>'ScheduleController@view'])
->where('year','\d{4}')
->where('month','0[1-9]|1[0-2]')
->where('day','0[1-9]|[12][0-9]|3[01]');
即,您可以提供以下其中一项:
当我使用route('schedule.view', ['2015','01','01])
链接到这些路线时,路线按原样工作,但是如果我省略了它尝试链接到/schedule/{year}-{month}-{day}
的参数(实际上有大括号!)。
有没有办法让laravel表现得更聪明,还是我必须给每条路线一个不同的名字?
答案 0 :(得分:2)
这绝对不可能,因为route()
从名称索引的数组中读取它们。
每个名字一条路线。所以看起来只有最后一条路线才会在那个阵列中,其他路线会被覆盖。
return isset($this->nameList[$name]) ? $this->nameList[$name] : null;
因此,似乎有一个不同的名称。