Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

andreigirnet96's avatar

Illegal offset type

Illegal offset type, could you please guys advise here? I guess is related to function create, when I am trying to send data to the view.

class RolesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function index()
    {
        $roles = Roles::all();
        return view('admin.roles.index')->with('roles',$roles);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function create()
    {
        $users = \App\Models\User::pluck('id');
        $permissions = Permissions::pluck('Permission_name','id');
        return view('admin.roles.create')->with('users', $users)->with($permissions,'permissions');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector
     */
    public function store(Request $request)
    {
       $roles = Roles::create($request->all());
       $permission_ids = $request->input('permission_id');
       $roles->permissions()->attach($permission_ids);
        return redirect(route('roles.index'))->with('success','Role created successfully');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Roles  $roles
     * @return \Illuminate\Http\Response
     */
    public function show(Roles $roles)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Roles  $roles
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function edit(Roles $roles)
    {
        $users = User::pluck('name','id');
        $permissions = Permissions::pluck('Permission_name','id');
        $selected_permissions = $roles->permissions()->pluck('id');
        return view('admin.roles.edit')->with('users',$users)->with('permissions',$permissions)->with('selected_permissions',$selected_permissions);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Roles  $roles
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector
     */
    public function update(Request $request, Roles $roles)
    {
        $input = [
            'role_name'=> $request->role_name,

        ];
        $roles->update($input);
        $permission_ids = $request->input('permission_id');
        $roles->update($request->all());
        $roles->permissions()->sync($permission_ids);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Roles  $roles
     * @return \Illuminate\Http\Response
     */
    public function destroy(Roles $roles)
    {
        //
    }
}
0 likes
2 replies
MichalOravec's avatar
Level 75

In create method change it to

return view('admin.roles.create')->with('users', $users)->with('permissions', $permissions);

or

return view('admin.roles.create', compact('users', 'permissions'));

Please or to participate in this conversation.