-
当路由文件中 ->where() 参数匹配模式不容易维护时,可以试试定义全局正则表达式 Pattern。
// 我们通常这样写 Route::get('users/{id}', 'UserController@getProfile')->where('id', '[\d+]+'); Route::get('products/{id}', 'ProductController@getProfile')->where('id', '[\d+]+'); Route::get('articles/{slug}', 'ArticleController@getFull')->where('slug', '[a-z0-9-]+'); Route::get('faq/{slug}', 'FaqController@getQuestion')->where('slug', '[a-z0-9-]+'); // // 其实,我们可以先定义一些匹配模式,就可以多次调用,维护起来很方便: // 参数条件 Route::pattern('id', '\d+'); Route::pattern('hash', '[a-z0-9]+'); Route::pattern('hex', '[a-f0-9]+'); Route::pattern('uuid', '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'); Route::pattern('base', '[a-zA-Z0-9]+'); Route::pattern('slug', '[a-z0-9-]+'); Route::pattern('username', '[a-z0-9_-]{3,16}'); // 还可以定义更多,比如邮箱、密码等。 Route::get('users/{id}', 'UserController@getProfile'); Route::get('products/{id}', 'ProductController@getProfile'); Route::get('articles/{slug}', 'ArticleController@getFull'); Route::get('faq/{slug}', 'FaqController@getQuestion');
转:http://laravel.lapland.name/post/104120060070/routing-patterns