Laravel 带破折号的可选路线

Laravel 带破折号的可选路线,laravel,Laravel,我想创建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}') ->wh

我想创建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]');
i、 例如,您可以提供以下选项之一:

  • 无年/月/日
  • 年和月
  • 年、月、日
当我使用
route('schedule.view'、['2015'、'01'、'01])
链接到这些路由时,它们的工作方式是一样的,但是如果我省略了参数,它会尝试链接到
/schedule/{year}-{month}-{day}
(括号实际上在那里!)


有没有办法让laravel表现得更聪明,或者我必须给我的每条路由取一个不同的名称?

这绝对不可能,因为
route()
从按名称索引的数组中读取它们。 每个名字一条路线。因此,看起来只有最后一条路由将位于该数组中,其他路由将被覆盖

该函数只执行以下操作:

返回isset($this->nameList[$name])$此->名称列表[$name]:空;

因此,一个不同的名字似乎是一条路。

Hrm。我想如果我重新定义路由名称,它应该会出错。我想它可能是聪明的,考虑ARG的数量。或者我可以用某种方式重写路线,比如
schedule/{{year}-{month}}?{-{day}?
。哦,好吧。这没什么大不了的,谢谢!看起来,当使用相同名称定义多个路由时抛出异常是有意义的。也许还有其他功能可以实际用于每个名称idk的多个路由。用可选参数定义一条路由可能是另一种解决方案。