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

Twan_van_Essen's avatar

Undefined variable $member

I am getting an error message when showing a table from the database. i changed the variable from $members to $member Looks like an error with the routing?

Error: Undefined variable $member

Controller

<?php

namespace App\Http\Controllers;

use App\Models\Member; use Illuminate\Http\Request;

class MemberController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = Member::latest()->paginate(5);

    return view('pages.members.index', compact('data'))->with('i', (request()->input('page', 1) - 1) * 5);
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('pages.members.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $request->validate([
        'name'          =>  'required',
        'email'         =>  'required|email|unique:members',
        'image'         =>  'required|image|mimes:jpg,png,jpeg,gif,svg|max:2048|dimensions:min_width=100,min_height=100,max_width=1000,max_height=1000'
    ]);

    $file_name = time() . '.' . request()->image->getClientOriginalExtension();

    request()->image->move(public_path('images'), $file_name);

    $member = new Member;

    $member->name = $request->name;
    $member->callsign = $request->callsign;
    $member->firstname = $request->firstname;
    $member->lastname = $request->lastname;
    $member->preposition = $request->preposition;
    $member->email = $request->email;
    $member->phonenumber = $request->phonenumber;
    $member->image = $file_name;
    $member->bankaccount = $request->bankaccount;
    $member->birthday = $request->birthday;

    $member->save();

    return redirect()->route('pages.members.index')->with('success', 'Member Added successfully.');
}

/**
 * Display the specified resource.
 *
 * @param  \App\Models\Member  $member
 * @return \Illuminate\Http\Response
 */
public function show(Member $member)
{
    return view('pages.members.show', compact('member'));
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  \App\Models\Member  $member
 * @return \Illuminate\Http\Response
 */
public function edit(Member $member)
{
    return view('pages.members.edit', compact('member'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \App\Models\Member  $member
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, Member $member)
{
    $request->validate([
        'name'      =>  'required',
        'email'     =>  'required|email',
        'image'     =>  'image|mimes:jpg,png,jpeg,gif,svg|max:2048|dimensions:min_width=100,min_height=100,max_width=1000,max_height=1000'
    ]);

    $image = $request->hidden_image;

    if($request->image != '')
    {
        $image = time() . '.' . request()->image->getClientOriginalExtension();

        request()->image->move(public_path('images'), $image);
    }

    $member = Member::find($request->hidden_id);

    $member->name = $request->name;

    $member->callsign = $request->callsign;

    $member->firstname = $request->firstname;

    $member->lastname = $request->lastname;

    $member->preposition = $request->preposition;

    $member->email = $request->email;

    $member->phonenumber = $request->phonenumber;

    $member->image = $request->image;

    $member->bankaccount = $request->bankaccount;

    $member->birthday = $request->birthday;

    $member->image = $image;

    $member->save();

    return redirect()->route('pages.members.index')->with('success', 'Member Data has been updated successfully');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  \App\Models\Member  $member
 * @return \Illuminate\Http\Response
 */
public function destroy(Member $member)
{
    $member->delete();

    return redirect()->route('pages.members.index')->with('success', 'Member Data deleted successfully');
}

}

Blade where the member variable is used and i changed it to $member instead of $members:

<div class="card">
    <div class="card-header">
        <div class="row">
            <div class="col col-md-6"><b>Member Details</b></div>
            <div class="col col-md-6">
                {{--                                        <a href="{{ route('pages.members.index') }}" class="btn btn-primary btn-sm float-end">View All</a>--}}
            </div>
        </div>
    </div>
    <div class="card-body">
        <div class="row mb-3">
            <label class="col-sm-2 col-label-form"><b>Member Name</b></label>
            <div class="col-sm-10">
                {{ $member->name }}
            </div>
        </div>
        <div class="row mb-3">
            <label class="col-sm-2 col-label-form"><b>Member Email</b></label>
            <div class="col-sm-10">
                {{ $member->email }}
            </div>
        </div>
        <div class="row mb-4">
            <label class="col-sm-2 col-label-form"><b>Image</b></label>
            <div class="col-sm-10">
                <img src="{{ asset('images/' .  $member->image) }}" width="200" class="img-thumbnail"/>
            </div>
        </div>
    </div>
</div>
0 likes
7 replies
Sinnbeck's avatar

That view.. Is that the 'pages.members.edit ?

2 likes
Tray2's avatar
Tray2
Best Answer
Level 73

You pass it as $data and not as $member

return view('pages.members.index', compact('data'))->with('i', (request()->input('page', 1) - 1) * 5);
2 likes
Sinnbeck's avatar

And its paginated data, so you need foreach

@foreach ($data as $member)
1 like
Sinnbeck's avatar

@Twan_van_Essen No worries. But renaming it back to $members might be a good idea. It is a bit more telling than $data

And please mark the answer by @tray2 as best if the problem is solved :)

1 like

Please or to participate in this conversation.