在 Laravel 中创建具有角色的用户时需要帮助

我遵循了一个关于如何创建角色以及如何在 Laravel 中使用门的很好的教程。


我可以为用户添加角色并对其进行编辑,但我希望能够创建一个用户并为他/她提供一个或多个角色,但我不知道从哪里开始(我不是专业人士,但我需要完成这个应用程序)。


这是到目前为止我可以向您展示的所有代码:


用户控制器:


public function edit(User $user, $id)

{

    $user = User::findOrFail($id);

    $roles = Role::all();


    return view('admin.users.edit',compact('user', 'roles'));

}


/**

 * Update the specified resource in storage.

 *

 * @param  \Illuminate\Http\Request  $request

 * @param  \App\User  $user

 * @return \Illuminate\Http\Response

 */

public function update(Request $request, User $user, $id)

{

    $user = User::findOrFail($id);

    $user->roles()->sync($request->roles);


    $user->name = $request->name;

    $user->email = $request->email;


    $user->save();


    return redirect()->route('admin.utilisateurs.index');

}

角色表:


public function up()

{

    Schema::create('roles', function (Blueprint $table) {

        $table->id();

        $table->string('name');

        $table->timestamps();

    });

}

数据透视表 :


public function up()

{

    Schema::create('role_user', function (Blueprint $table) {

        $table->id();

        $table->BigInteger('role_id')->unsigned()->onDelete('cascade');

        $table->BigInteger('user_id')->unsigned()->onDelete('cascade');

        $table->timestamps();

    });

}

使用复选框编辑刀片文件:


<div class="block-content">

    <div class="form-group">

        @foreach ($roles as $role)

            <div class="form-group form-check">

                <input type="checkbox" class="form-check-input" name="roles[]"

                    value="{{ $role->id }}" id="{{ $role->id }}" 

                    @if ($user->roles->pluck('id')->contains($role->id)) checked @endif>

                <label class="" for="{{ $role->id }}">{{ $role->name }}</label>

            </div>

        @endforeach

    </div>

</div>

问题是我真的不知道如何在创建刀片文件上编写代码。



繁星淼淼
浏览 57回答 1
1回答

慕雪6442864

创建刀片几乎与编辑刀片相同。您只需不需要检查现有角色即可。//rest of the form first like user name and email<div class="block-content">&nbsp; &nbsp; <div class="form-group">&nbsp; &nbsp; &nbsp; &nbsp; @foreach ($roles as $role)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="form-group form-check">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="checkbox" class="form-check-input" name="roles[]" value="{{ $role->id }}" id="{{ $role->id }}">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <label class="" for="{{ $role->id }}">{{ $role->name }}</label>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; @endforeach&nbsp; &nbsp; </div></div>然后在控制器中而不是sync仅仅使用attachpublic function store(Request $request){&nbsp; &nbsp; $user = new User();&nbsp; &nbsp; $user->name = $request->name;&nbsp; &nbsp; $user->email = $request->email;&nbsp; &nbsp; $user->save();&nbsp; &nbsp; $user->roles()->attach($request->roles);&nbsp; &nbsp; return redirect()->route('admin.utilisateurs.index')->with('success','Utilisateurajouté');}看我已经删除了存储功能中的模型绑定。这里没有必要。以及保存用户后附加的角色。此处attach的文档。_sync
打开App,查看更多内容
随时随地看视频慕课网APP