【问题标题】:Image not showing in front page图片未显示在首页
【发布时间】:2019-01-19 14:52:33
【问题描述】:

这是使用后控制器和索引方法在前端显示图像:

 public function index(){

        $user = Auth::user();
        $posts = Post::paginate(2);
        $images = Image::all();

      return view('post.index', compact('posts', 'user', 'images'));

}
public function create(){
    $categories = Category::all();

    return view('post.create', compact('categories'));
}
public function store(Request $request){

     $user_id = Auth::user();
     $post_id = $user_id->post()->create($request->all());


$image=array();
if($files=$request->file('image')){
    foreach($files as $file){
        $name= time() .$file->getClientOriginalName();
        $file->move('image',$name);

    Image::create([
        'image'     =>  $name,
        'post_id'   => $post_id->id,
    ]);

    }
}

    return redirect()->back();

}

这是我的视图文件那里的帖子内容显示:

@foreach($posts as $key=>$post) 
			
		<div class="col-sm-4 my-4">
   			 <div class="card center">
       			 <img class="card-img-top" src="img/user1.jpg" alt="">
        		<div class="card-body">
           		 <h2 class="card-title">{{$post->title}}</h2>
            	<p class="card-text">{{$post->category}}</p>
            	<p class="card-text">{{$post->title}}</p>
         
                    @foreach($images as $image)
                      <p>{{$image->image}}</p>
                    @endforeach
        		</div>        
   		 	 </div>

		</div>
		
			
		
		@endforeach

This is table of image

This is post table

现在的问题是,当我尝试获取图像时,它只显示图像名称......但是我怎样才能正确显示首页的图像。

这是我的浏览器输出文件....图像表和发布表是单独连接到外键...图像扩展名显示在首页但图像不显示

对不起,我的英语不好,但我把代码、视图、表格都放在了上面,这样任何人都可以轻松理解.... output like this

Image table value in database

【问题讨论】:

  • 显示图像的表值。
  • 我添加了...检查一下 -@SetKyarWaLar
  • 显示您的应用程序和图像文件夹结构。
  • 文件夹名称应该是images 而不是image
  • 我做到了..检查我更新的答案

标签: laravel laravel-5 laravel-4 laravel-5.2


【解决方案1】:

如果不是,您必须先将存储与公用文件夹链接

php artisan storage:link

然后您可以通过

检索图像
<img src="{{ '/public/images/' . $image->image }}">

这里的 images 是您用来存储图像的图像文件夹名称。

【讨论】:

  • @Nirav Patel 用于显示图像,你必须这样写。 &lt;img src="{{ asset('images').'/' . $image-&gt;image }}"&gt;
  • 是的@JinalSomaiya 你也写了asset('images') 将你重定向到公共文件夹,所以两者都给出相同的结果
  • 我做到了,图像显示,但问题是所有图像显示哪个是数据库...我想通过获取图像来特定 post_id...我该怎么做 -@NiralPatel
  • @kinnariprajapati 因为您从 Image 表中检索所有图像,所以您必须指定特定的帖子 ID,例如 Image::where('post_id',$post_id)-&gt;get(); 而不是 Image::all(); 这里 $post_id 是您特定帖子的 ID。
  • @kinnariprajapati 将代码还原为Image::all();,并在您的刀片页面中检查@if($post-&gt;id == $image-&gt;post_id) 的图像foreach 循环中的条件。
【解决方案2】:

根据您的代码,图像保存在image 文件夹下。但是,您正在检索不是正确路径的{{$image-&gt;image}}。这就是为什么您的图像没有出现。您可以使用 url()assert() 助手。或者您可以在循环显示时简单地执行{{ '/images/' . $image-&gt;image }}

当然,你必须使用img标签才能显示为图像。

<img src="{{ '/images/' . $image->image }}">

更新 我再次阅读了您的代码,发现您的图像保存在应用程序根路径中。在您的 store 方法中。将$file-&gt;move('image',$name) 更新为$file-&gt;move(public_path('images'),$name)。现在,我们将您的图片发送至public_path。您必须重新上传并再次测试。

您可以阅读更多关于断言助手here 和关于here 的URL 助手。

【讨论】:

  • 我试试这个,但输出是这样的 /image/Desert.jpg /image/Chrysanthemum.jpg -
  • 当然会输出。您必须放入 img 标记内。我更新了答案@kinnariprajapati
  • 根据您的结果更新答案。试试看。请注意,您还应该阅读您的代码在做什么。否则,你必须询问每一个细节。
  • 我把图片文件夹放在公用文件夹里
  • 存储::url('/images').$image->name
【解决方案3】:

如果您将图像保存在存储中,则运行以下命令: php工匠存储:链接

然后你可以通过

<p><img src="{{url('storage/images').'/'.$image->name}}"></p>

如果您将图像保存在公共路径中,则可以直接获取图像

<img src="{{url('/images').'/'.$image->name}}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-05-19
    • 2018-12-25
    相关资源
    最近更新 更多