Laravel: Undefined variable in blade view

25,911

Solution 1

You have used $images as your variable name when passing the data to the view. This results in blade creating a variable called $$images.

return view('admin',[ 'images' => $images]);

will result in the view creating a variable called $images

Solution 2

Try passing data like this.

$images = Image::paginate();
return view("admin")->with('images',$images);

Basically,you need not use $ in the variable name.

Solution 3

Your code should be like this

public function admin() {
    $images = Image::paginate();

    return view('admin',[ 'images' => $images]);

}

Why you use [ '$images' => $images]. that is the problem.

Solution 4

You may use this method also to pass your data to view

 return view('admin',compact('images'));
Share:
25,911
Sahand
Author by

Sahand

Software developer since August 2018. Studied Machine Learning at KTH, Sweden. Currently writing my master's thesis, where I'm implementing a neural search engine. Technologies: Java, Scala, Python, Javascript Want to learn: Apache Spark, Hadoop Interests: Data Engineering, Machine learning, Music, Human Psychology

Updated on December 26, 2020

Comments

  • Sahand
    Sahand over 3 years

    This is AdminController.php:

    <?php
    
    namespace App\Http\Controllers;
    
    use Response;
    
    use Illuminate\Support\Facades\DB;
    use App\Caption;
    use App\Image;
    use App\Http\Controllers\Controller;
    
    class AdminController extends Controller
    {
        public function admin() {
            $images = Image::paginate();
    
            return view('admin',[ '$images' => $images]);
        }
    }
    

    And this is admin.blade.php:

    @extends('template')
    
    @section('title')
        Admin Page
    @endsection
    
    @section('header')
    @endsection
    
    @section('main')
        @if (Auth::check())
            @foreach ($images as $image)
                <p value='{{$image->id}}'>{{$image->content}}</p>
                <form action="image/{{$image->id}}/delete" method="post">
                    <button type="submit">Delete caption</button>
                </form> 
                <form action="image/{{$image->id}}/approve" method="post">
                    <button type="submit">Accept image</button>
                </form>
            @endforeach
        @else
            <p>Login first</p>
        @endif
    @endsection
    
    @section('footer')
    @endsection
    

    Why do I get the following error?

    ErrorException in 408148d5409ae6eebf768dc5721bd0d1d9af48af.php line 9: Undefined variable: images (View: /Users/sahandz/Documents/School/Singapore/CS3226/backend/resources/views/admin.blade.php)

    $imagesis clearly defined in my controller.