Php 使用laravel 5.4中的if条件获取图像
我尝试打印用户在Laravel5.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 {
@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
ifif
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!我用更多的信息更新了代码,现在请分享你的想法。我的错!我用更多信息更新了代码,现在请分享你的想法。