简体   繁体   中英

Undefined variable issue Laravel 5.4

I've got stuck with this error so if ever pls forgive me because I'm still new at laravel. I got this error

Undefined variable: clientTransactions (View: C:\\xampp\\htdocs\\dcgwapo\\resources\\views\\service_details\\create.blade.php)

but I have a right code but I still wondering why it is still undefined variable given I define it in my controller.

create.blade.php in service details code

<div class="form-group">
    <label for="client_transaction_id">Client Trans ID: </label>
    <select class="form-control" name="client_transaction_id">
        @foreach ($clientTransactions as $clientTransaction)
            <option value= "{{ $clientTransaction->id }}">
              {{ $clientTransaction->id }}
            </option>
        @endforeach
    </select>
  </div>

ServiceDetailsController code

public function create()
{
    $users = User::pluck('fname', 'lname', 'id');
    $services = Service::pluck('name', 'id');
    $clientTransactions = ClientTransaction::all();
    return view('service_details.create', ['users' => User::all()], ['services' => Service::all()], ['clientTransactions' => ClientTransaction::all()]);
}

ServiceDetail.php model code

public function clientTransaction()
{
  return $this->belongsTo(ClientTransaction::class);
}

I hope you can help me. Thanks!

You're sending variables to your view the wrong way. The seconds argument should be an array with all your variables. As of now your adding a new parameter to the view function for each variable.

view('view', [...], [...], [...])

It should be like this:

view('view', [...1, ...2, ...3])

So what you need to change is the return statement to this:

return view('service_details.create', ['users' => User::all(), 'services' => Service::all(), 'clientTransactions' => ClientTransaction::all()]);
You can use compact to pass data from controller to view:



        public function create()
        {
            $users = User::pluck('fname', 'lname', 'id');
            $services = Service::pluck('name', 'id');
            $clientTransactions = ClientTransaction::all();
            return view('service_details.create',compact('users','services','clientTransactions');
        } 

Second parameter to view function accepts an associative array of data, you are passing an indexedArray of arrays, Just use this return statement and you are good to go. ;)

    return view('service_details.create', [
        'users' => User::all(),
        'services' => Service::all(),
        'clientTransactions' => ClientTransaction::all()
    ]); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM