如何使用用户昵称创建路由组
How to create routes group using user nickname
现在,我已经自定义了显示和编辑用户个人资料的路线:
代码:
Route::get('/{nickname}', 'User\ProfileController@index')->where(['nickname' => '[a-z0-9_]+');
Route::get('/{nickname}/edit', "User\ProfileController@edit")->where(['nickname' => ''[a-z0-9_]+''])->name('edit')->middleware('auth');
如您所见,在这两种情况下,我都使用了正则表达式,这是代码的重复。另外,我必须创建许多开头必须有用户名的路由。
问题:
那么如何创建一组以授权用户的昵称开头的路由器?
这是在 Laravel 中使用动态前缀创建路由组的示例:
Route::prefix('{nickname}')->group(function () {
Route::get('/', function($nickname) {
echo "User nickname: $nickname";
})->where(['nickname' => '[a-z]+']);
Route::get('/edit', function($nickname) {
echo "Edit user with nickname: $nickname";
});
Route::get('/post/edit/{id}', function($nickname, $id) {
echo "User nickname = $nickname and POST ID = $id";
});
Route::get('/event/edit/{id}', 'UserController@editEvent');
});
在控制器方法中获取参数:
public function editEvent($nickname, $id) {
echo "User nickname = $nickname and Event ID = $id";
}
注意:当您在一组具有动态前缀的路由中创建新路由时,您必须将前缀的名称指定为回调函数参数中的变量,或者控制器方法。
现在,我已经自定义了显示和编辑用户个人资料的路线:
代码:
Route::get('/{nickname}', 'User\ProfileController@index')->where(['nickname' => '[a-z0-9_]+');
Route::get('/{nickname}/edit', "User\ProfileController@edit")->where(['nickname' => ''[a-z0-9_]+''])->name('edit')->middleware('auth');
如您所见,在这两种情况下,我都使用了正则表达式,这是代码的重复。另外,我必须创建许多开头必须有用户名的路由。
问题:
那么如何创建一组以授权用户的昵称开头的路由器?
这是在 Laravel 中使用动态前缀创建路由组的示例:
Route::prefix('{nickname}')->group(function () {
Route::get('/', function($nickname) {
echo "User nickname: $nickname";
})->where(['nickname' => '[a-z]+']);
Route::get('/edit', function($nickname) {
echo "Edit user with nickname: $nickname";
});
Route::get('/post/edit/{id}', function($nickname, $id) {
echo "User nickname = $nickname and POST ID = $id";
});
Route::get('/event/edit/{id}', 'UserController@editEvent');
});
在控制器方法中获取参数:
public function editEvent($nickname, $id) {
echo "User nickname = $nickname and Event ID = $id";
}
注意:当您在一组具有动态前缀的路由中创建新路由时,您必须将前缀的名称指定为回调函数参数中的变量,或者控制器方法。