Php 使用laravel 5.4中的if条件获取图像

Php 使用laravel 5.4中的if条件获取图像,php,laravel,if-statement,Php,Laravel,If Statement,我尝试打印用户在Laravel5.4中上传的图像。我使用了一个if条件,若用户并没有上传任何图像,那个么会显示默认图像,但我的源代码并没有打印任何内容。这是我使用的代码: @if (File::exists($post->image)) { echo "<img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />"; } else {

我尝试打印用户在Laravel5.4中上传的图像。我使用了一个if条件,若用户并没有上传任何图像,那个么会显示默认图像,但我的源代码并没有打印任何内容。这是我使用的代码:

@if (File::exists($post->image))
    {
        echo "<img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />";
    } else {
        echo "<img src="{{ asset('images/no-image.png') }}" alt="{{ $post->title }}" />";
    }
@endif
@if(文件::存在($post->image))
{
echo“image)}}”alt=“{{$post->title}}”/>”;
}否则{
回显“title}}”/>”;
}
@恩迪夫
更新:

我尝试使用以下代码:

@if (File::exists(public_path("asset/uploads/".$post->image)))
    <img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />
@else 
    <img src="{{ asset('images/no-image.png') }}" alt="{{ $post->title }}" />
@endif
@if(文件::存在(公共路径(“资产/上传/”$post->image)))
image)}}“alt=“{{$post->title}}”/>
@否则
标题}}”/>
@恩迪夫
现在我得到的结果是:

如果在
if
中使用
asset/uploads
assets/uploads
,则所有图像返回为无图像,即使它们有图像。 如果我使用
uploads
if
if
posts显示图像,但其他显示没有图像,我将为它们获取的url是
url.dev/uploads
,而不是
url.dev/images/no image.png
文件::exists()
将检查文件在硬盘中的物理位置。因此,必须使用文件的实际路径

@if (File::exists(public_path("assets/uploads/".$post->image)))
    <img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />
@else 
    <img src="{{ asset('images/no-image.png') }}" alt="{{ $post->title }}" />
@endif
@if(文件::存在(公共路径(“资产/上传/”$post->image)))
image)}}“alt=“{{$post->title}}”/>
@否则
标题}}”/>
@恩迪夫
交叉检查“public_path”方法生成的路径是否适合您的文件

更新:多亏了linktoahref,你的刀片代码也错了。在这里更正

文件::exists的工作原理与php的文件_exists相同,即使您搜索目录,它也会返回true,现在这里发生的情况是,对于某些帖子,图像为null,这使得路径成为目录

请改用此代码

@if ($post->image && File::exists(public_path("uploads/".$post->image)))
   <img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />
@else 
   <img src="{{ asset('images/no-image.png') }}" alt="{{ $post->title }}" />
@endif
@if($post->image&&File::exists(公共路径(“uploads/”$post->image)))
image)}}“alt=“{{$post->title}}”/>
@否则
标题}}”/>
@恩迪夫

您将原始php和刀片模板混合在一起,要么使用原始php代码,要么使用刀片模板语法

所以在blade中会出现以下情况

@if (File::exists($post->image))
    <img src="{{ asset('uploads/' . $post->image) }}" alt="{{ $post->title }}" />
@else 
    <img src="{{ asset('images/no-image.png') }}" alt="{{ $post->title }}" />
@endif
@if(文件::存在($post->image))
image)}}“alt=“{{$post->title}}”/>
@否则
标题}}”/>
@恩迪夫
或者使用原始php作为

<?php
 if (File::exists($post->image)) { 
     echo "<img src=". asset('uploads/' . $post->image) . " alt=" . $post->title . " />"; 
 } else { 
     echo "<img src=". asset('images/no-image.png') . " alt=". $post->title ." />"; 
 }
?>


请检查您的刀片语法,不需要braceMy bad!我用更多的信息更新了代码,现在请分享你的想法。我的错!我用更多信息更新了代码,现在请分享你的想法。