Laravel 4的路线冲突


Routes collision in Laravel 4

我正在使用Laravel 4进行一个项目,我有一个"用户路线",可以按用户名显示用户配置文件:

Route::get("user/{username}", array( 'as' => 'userProfile', 'uses' => 'UserController@getProfile') );

但这里我有另一条显示用户消息的路线。

Route::get('user/messages', array( 'as' => 'userMessages', 'uses' => 'MessageController@getMessages') )

但这里发生了碰撞。Laravel认为"messages"是一个用户名,因为第一条路由。

我该如何解决这个问题?有人能帮我吗,谢谢。

当Laravel按照routes.php 中定义的顺序处理这些路由时,您必须更改这些路由的顺序

所以,

Route::get('user/messages', array( 'as' => 'userMessages', 'uses' => 'MessageController@getMessages') )

在之前

Route::get("user/{username}", array( 'as' => 'userProfile', 'uses' => 'UserController@getProfile') );

然后,在您的User验证中,您必须防止任何人选择用户名messages