Как вставить больше данных при регистрации пользователя в Laravel Spark

Я использую 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

Решение

Итак, чтобы обойти это, вы можете сделать следующее:

Файл находится по адресу 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

Другие решения

Рекомендуемый способ сделать это в 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;
});
1

По вопросам рекламы [email protected]