如何在 laravel 中正确配置 elseif 语法

how to correctly configure elseif syntax in laravel

我在 blade 中遇到以下情况,即使配置正确,@elseif 也不起作用。

在 html 中它把我带走了而不是

@if ($posts->mime_type == ('video/mp4'||'video/quicktime'))
    <video loop muted autoplay class="item-img" src="../public/uploads/file_manager/{{ get_array_data($posts->cover_image) }}"  alt="Tutoriale cum sa creezi gratuit un site"></video>                        
@elseif ($posts->mime_type == ('image/jpg'||'image/png'))
    <image  class="item-img" src="../public/uploads/file_manager/{{ get_array_data($posts->cover_image) }}"  alt="Tutoriale cum sa creezi gratuit un site"></image>  
@else
    <div style="padding:100% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/{{ get_array_data($posts->video_url) }}" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Gene fir cu fir Brasov"></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
@endif

第一个和第二个条件忽略因为实际上没有mime_type等于1.见 https://3v4l.org/kLvRR

<?php
echo ('video/mp4'||'video/quicktime'); // Will show 1

这导致:

  1. 只有在 URL 此处 "https://player.vimeo.com/video/{{ get_array_data($posts->video_url) }}" 有意义的情况下才向视频播放器显示实际视频。
  2. 否则你会像第二张和第三张一样得到一张白卡。

将代码更改为:

@if ($posts->mime_type == 'video/mp4' || $posts->mime_type == 'video/quicktime')
        {{-- ^^^^ --}}
    <video loop muted autoplay class="item-img"
        src="../public/uploads/file_manager/{{ get_array_data($posts->cover_image) }}"
        alt="Tutoriale cum sa creezi gratuit un site"></video>
@elseif ($posts->mime_type == 'image/jpg' || $posts->mime_type == 'image/png')
        {{-- ^^^^ --}}
    <image class="item-img" src="../public/uploads/file_manager/{{ get_array_data($posts->cover_image) }}"
        alt="Tutoriale cum sa creezi gratuit un site"></image>
@else
    <div style="padding:100% 0 0 0;position:relative;">
        <iframe src="https://player.vimeo.com/video/{{ get_array_data($posts->video_url) }}" frameborder="0"
            allow="autoplay; fullscreen; picture-in-picture" allowfullscreen
            style="position:absolute;top:0;left:0;width:100%;height:100%;" title="Gene fir cu fir Brasov"></iframe>
    </div>
    <script src="https://player.vimeo.com/api/player.js"></script>
@endif

通常检查图像或视频的条件更好

substr($posts->mime_type,0 ,5) === 'video';
substr($posts->mime_type,0 ,5) === 'image';

特定 MIME 类型的清洁条件:

// Somewhere in your code
$my_videos_mime_types = ['video/mp4', 'video/quicktime'];
$my_images_mime_types = ['image/jpg', 'image/png'];
in_array($posts->mime_type, $my_videos_mime_types);
in_array($posts->mime_type, $my_images_mime_types);