Laravel Присоединить роль с помощью поля выбора - PullRequest
0 голосов
/ 20 июня 2020
• 1000 -to-many, и я должен использовать флажки вместо поля выбора

, но в то время по какой-то причине мне нужно назначить только 1 роль для пользователя

Итак, я должен использовать select коробка

Есть идеи?

Контроллер

public function store(Request $request)
{
    $this->validate($request, array(
        'name'         => 'required|string|max:255',
        'email'          => 'required|string|email|max:255|unique:users',
        'password'          => 'required|string|min:8',
    ));
    $password = Hash::make($request->password);
    $user = new User;
    $user->name = $request->input('name');
    $user->email = $request->input('email');
    $user->password = $password;
    $user->save();

    if ($request['user']) {
        $user->roles()->attach(Role::where('name','user')->first());
    }
    if ($request['editor']) {
        $user->roles()->attach(Role::where('name','editor')->first());
    }
    if ($request['admin']) {
        $user->roles()->attach(Role::where('name','admin')->first());
    }

    return redirect('users')->with('success', 'user is successfully saved');
}

Просмотр

                        <div class="form-group">
                            <label class="col-12">Roles</label>
                            <div class="col-12">
                                <div class="custom-control custom-radio mb-5">
                                    <input class="custom-control-input" type="radio" name=admin" id="example-radio1" value="admin">
                                    <label class="custom-control-label" for="example-radio1">Admin</label>
                                </div>
                                <div class="custom-control custom-radio mb-5">
                                    <input class="custom-control-input" type="radio" name=pharmacy" id="example-radio2" value="editor">
                                    <label class="custom-control-label" for="example-radio2">Editor</label>
                                </div>
                                <div class="custom-control custom-radio mb-5">
                                    <input class="custom-control-input" type="radio" name=company" id="example-radio3" value="user">
                                    <label class="custom-control-label" for="example-radio3">User</label>
                                </div>
                            </div>
                        </div>

1 Ответ

0 голосов
/ 20 июня 2020

Думаю, здесь лучше использовать флажки вместо отдельных радиовходов.

<input type="checkbox" name="roles[]" value="admin"><label>Admin</label>
<input type="checkbox" name="roles[]" value="editor"><label>Editor</label>
<input type="checkbox" name="roles[]" value="user"><label>User</label>

На стороне Laravel:

// find the ids of the roles submitted by name
$role_ids = Role::whereIn('name', $request->input('roles', []))->pluck('id');
// attach any ids needed
$user->roles()->attach($role_ids);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...