如何将响应数据绑定到laravel 5

时间:2016-04-24 08:27:12

标签: php mysql laravel laravel-5 httpresponse

我试图在元素上显示图像,但它不起作用,而当我只是将数据返回其显示图像时。

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">

请帮忙。

2 个答案:

答案 0 :(得分:0)

Auth::user()->profile_pic是否是用户头像的网址? 如果是这样,请使用

return View::make('dashboard', ['img'=>Auth::user()->profile_pic]);

另外,在src属性中添加引号:

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

了解

非常重要
$img = response($Image)->header('Content-Type', $type);

是一个Illuminate\Http\Response的响应对象,但在HTML中,您需要指向图片的链接string,而不是Response

答案 1 :(得分:0)

您应该添加一个路由,以便在将请求发送到指定的URL时,从数据库中读取头像并将其发送到浏览器,如image / jpeg。

E.g。将以下代码添加到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');
    });

修改/ dashboard路线以使用此新路线

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

最后,在您的视图中,绑定新变量

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