Описание
Я новичок в PHP / Laravel и настроил небольшое управление пользователями / ролями. Мне нужно только зарегистрироваться и войти в систему. Функция «регистрация» доступна только для администратора. Я использовал стандартную настройку аутентификации, как описано здесь в Laravel документах .
. В настоящий момент каждый новый пользователь получает роль "ученик", как вы можете видеть в этом фрагменте:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'password' => Hash::make($data['password']),
]);
// every new user gets the role "student"
$role = Role::select("id")->where("role", "student")->first();
$user->roles()->attach($role);
return $user;
}
То есть соответствующий блейд для формы создания пользователя:
<h2>Benutzer Erstellen</h2>
<form method="POST" action="{{ route('register') }}" class="form-container">
@csrf
<h3>Neuen Benutzer anlegen</h3>
{{-- <h4>Benutzerrechte:</h4>
<div class="row-container">
<div class="row-grid">
<label for="name">{{ __('Login Name:') }}</label>
<input id="name" type="text" class="edit-input @error('name') is-invalid @enderror" name="name"
value="{{ old('name') }}" required autocomplete="name" autofocus placeholder="Name">
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="row-grid">
<label for="password">{{ __('Passwort:') }}</label>
<input id="password" type="password" class="edit-input @error('password') is-invalid @enderror" name="password"
required autocomplete="new-password" placeholder="Passwort">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="row-grid">
<label for="password-confirm">{{ __('Passwort wiederholen:') }}</label>
<input id="password-confirm" type="password" class="edit-input" name="password_confirmation" required
autocomplete="new-password" placeholder="Passwort wiederholen">
</div>
<div class="form-bottom"><a class="abort-btn" href="{{route("admin.users.index")}}">Abbrechen</a>
<button class="action-btn" type="submit">Nutzer anlegen</button>
</div>
</form>
Цель
Я хочу реализовать динамически созданные флажки с возможные роли, так что администратор может назначить роли, создав пользователя. Я попробовал это так:
<div class="row-container">
@foreach ($roles as $role)
<input type="checkbox" name="roles[]" value="{{ $role->id}}">
{{Form::label("body", $role->role)}}
@endforeach
</div>
Вопросы
Так как же можно установить один из флажков по умолчанию?
А как должен выглядеть код в RegisterController для получения значений из флажков и связывания ролей с пользователем?
Редактировать
Ответ на второй вопрос:
В RegisterController Заменить:
$role = Role::select("id")->where("role", "student")->first();
$user->roles()->attach($role);
на:
$user->roles()->attach($data['roles']);
Найдено на эта Laravel новостная статья .
Вы можете найти весь репо здесь .
Заранее спасибо за ваше время:)