Jatin Balodhi Jatin Balodhi - 7 months ago 7
SQL Question

How to bind response data to view in laravel 5

I was trying display an image at element but it is not working, And when i'm simply returning the data its displaying image.

route.php


Route::get('/dashboard',function() {

$Image = Auth::user()->profile_pic;
$type = 'image/jpeg';
$img = response($Image)->header('Content-Type', $type);

return View::make('dashboard', ['img'=>$img]);
});




dashboard.blade.php



<img src={{ $img }} class="img-circle" width="200" height="200">




Please help.

Answer

You should add a route so that when a request is sent to the specified URL, the avatar is read from the DB and sent to the browser, as image/jpeg.

E.g. Add the following code to your routes.php

Route::any('/user/{user}/profile-pic',
    function(\App\User $user) {
       $Image = Auth::user()->profile_pic;
       return response($Image)->header('Content-Type', 'image/jpeg');
    });

modify the /dashboard route to make use of this new route

Route::get('/dashboard',function() {
       $id = Auth::user()->id;
       $imageUrl="/user/$id/profile-pic";
       return view('/dashboard', ['imageUrl' => $imageUrl]);
     });

finally, in your view, bind the new variable

<img src="{{$imageUrl}}" class="img-circle" width="200" height="200">