我使用Laravel Spark作为我的最新应用,需要在注册时向表格中的列插入随机代码。
经过大量的代码挖掘后,我发现了这段代码:
/**
* Handle a registration request for the application.
*
* @param RegisterRequest $request
* @return Response
*/
public function register(RegisterRequest $request)
{
Auth::login($user = Spark::interact(
Register::class, [$request]
));
event(new UserRegistered($user));
return response()->json([
'redirect' => $this->redirectPath()
]);
}
可在Laravel\Spark\Http\Controllers\Auth\RegisterController;
我假设是将用户插入数据库的代码发生的地方。但我不能为我的生活弄清楚如何使用类似confirmation_code
的内容填充名为13sfet1201
的列。
我是如此坚持这一点,所以请提供任何建议。
提前致谢,
安迪
答案 0 :(得分:1)
好的,那么,为了解决这个问题,您可以执行以下操作:
位于Laravel\Spark\Repositories
的文件名为UserRepository.php
。这是处理创建新用户的逻辑的地方。
在此文件中,您将看到以下块:
$user->forceFill([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'last_read_announcements_at' => Carbon::now(),
'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()),
])->save();
我修改它以适应我需要的东西,如:
$user->forceFill([
'name' => $data['name'],
'email' => $data['email'],
'username' => $data['username'],
'confirmation_code' => $data['confirmation_code'],
'password' => bcrypt($data['password']),
'last_read_announcements_at' => Carbon::now(),
'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()),
])->save();
像魅力一样工作;)
答案 1 :(得分:1)
在Spark中这样做的推荐方法是覆盖SparkServiceProvider中的用户创建方法。 Spark有一些特殊的内置方法可以实现这一点。
在app / Providers / SparkServiceProvider.php中,你可以在booted()方法中添加这样的东西:
Spark::createUsersWith(function ($request) {
$user = Spark::user();
// trim these form fields
$fields = ['name', 'email', 'password', 'timezone', 'referral_code'];
$data = array_map('trim', $request->only($fields));
// now add user
$user->forceFill([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'tzone' => $data['timezone'],
'referred_by' => $data['referral_code'],
'last_read_announcements_at' => Carbon::now(),
'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()),
])->save();
// here you can queue notification email to user and
// all that post-registration stuff, or you could fire an event
// and add listener to handle this
return $user;
});
您可能还想为用户数据添加自定义验证。只需将您的规则添加到booted()方法,方法与上一个代码段相同:
Spark::validateUsersWith(function ($request) {
$rules = [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'timezone' => 'required|timezone',
'terms' => 'required|accepted',
'referral_code' => 'alpha_num',
];
return $rules;
});