我想在注册过程中为地区和国家/地区设置默认值吗?我不想将隐藏的输入或放入数据库或迁移中,我希望将其准确设置在注册功能中
protected function postAdminRegistration(Request $request)
{
/** @var User $user */
$validatedData = $request->validate([
'fname' => 'required|string|max:255',
'lname' => 'required|string|max:255',
'country_id'=>'required|integer|min:1',//here default value ex:2
'region_id'=>'required|integer|min:1',//here default value ex:1
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
try {
$validatedData['password']= bcrypt(array_get($validatedData, 'password'));
$validatedData['activation_code'] = str_random(30).time();
$user=app(User::class)->create($validatedData);
} catch (\Exception $exception) {
logger()->error($exception);
return redirect()->back()->with('message', 'Unable to create new user.');
}
$user->notify(new UserRegisteredSuccessfully($user));
return Redirect::to("users/login_form")->withSuccess('Successfully created a new account. Please check your email and activate your account.');
}
答案 0 :(得分:0)
如果不存在默认值,我会检查一下是否将值重新分配了。
$validatedData['region_id'] = $validatedData['region_id'] ?? $defaultRegion;
$validatedData['country_id'] = $validatedData['country_id'] ?? $defaultCountry;
通常,我不建议通过可填充对象设置id,而是设置关系。
$user = app(User::class)->create(array_except($validatedData, ['country_id', 'region_id']));
$region = Region::find($validatedData['region_id']) ?? Region::find($defaultRegion);
$user->region()->save();
答案 1 :(得分:0)
创建用于验证的自定义规则并将您的默认值和条件放在该支票中https://laravel-news.com/custom-validation-rule-objects,这将清除在Laravel中创建客户规则的一些基本思路。