【问题标题】:Laravel / PHP - Embedding a Youtube video into an array of imagesLaravel / PHP - 将 Youtube 视频嵌入到图像数组中
【发布时间】:2018-04-11 09:28:45
【问题描述】:

我是 PHP 和 Laravel 的新手,我有这个登录页面,它在页面正文上显示图像。

我的客户想要添加一个 Youtube 视频而不是其中一张图片,但我不太确定该怎么做。

我尝试在 foreach 循环中添加一个带有 $counter 的 if 语句,它会在 $counter 等于 $i 时显示嵌入的代码,但我要么做错了,要么就是不知道该怎么做正确,因为身体中没有任何东西出现,不是视频也不是图像..

感谢所有帮助,谢谢!

代码如下:

page.php:

public function index($path = "")
{

    $data = $this->data;

        $images = [
            "images/portraits/1.jpg",
            "images/portraits/2.jpg",
            "images/portraits/3.jpg",
            "images/portraits/4.jpg"
        ];

    $data['images'] = $images;
    $counter = 0;
    $data['counter'] = $counter;
    return view($this->folderPath."main",$data);
}

main.blade.php:

    @foreach($images as $i)
       <?php if ($counter == 2)?>
         <?php if ($counter == 2) ?>
            <iframe
             width="560" height="315" 
            src="https://www.youtube.com/embed/VIDEOID? 
            rel=0&amp;controls=0" 
            frameborder="0" allow="autoplay; encrypted-media" 
            allowfullscreen>
            </iframe>
        <div class="cbp-item">
            <a href="{{$i}}" class="cbp-caption cbp-lightbox">
                <div class="cbp-caption-defaultWrap">
                    <img src="{{str_replace(".jpeg","_mini.jpeg",str_replace(".jpg","_mini.jpg",$i))}}" alt="">
                </div>
                <div class="cbp-caption-activeWrap cbp-gray">
                    <div class="cbp-l-caption-alignCenter">
                        <div class="cbp-l-caption-body">
                            <i class="fa fa-expand enlarge-icon"></i>
                        </div>
                    </div>
                </div>
            </a>
        </div>
    @endforeach

【问题讨论】:

  • 到目前为止您尝试过什么?您遇到的实际问题是什么?
  • @SérgioReis 我尝试在 foreach 循环中添加一个带有 $counter 的 if 语句,当 $counter 等于 $i 时,它将显示嵌入的代码,但我要么做错了,要么只是不做不知道如何正确执行,因为正文中没有出现任何内容,视频和图像都没有..
  • 检查@Nirali 答案

标签: php laravel youtube


【解决方案1】:

你可以根据你的要求做这样的事情

page.php:

public function index($path = "")
{

    $data = $this->data;

        $images = [
            ["type" => "image", "file" => "images/portraits/1.jpg"],
            ["type" => "image", "file" => "images/portraits/2.jpg"],
            ["type" => "image", "file" => "images/portraits/3.jpg"],
            ["type" => "video", "file" => "https://www.youtube.com/embed/tgbNymZ7vqY"]
        ];

    $data['images'] = $images;
    return view($this->folderPath."main",$data);
}
main.blade.php :

    @foreach($images as $i)
        <div class="cbp-item">
            <a href="{{$i['file']}}" class="cbp-caption cbp-lightbox">
                <div class="cbp-caption-defaultWrap">
                    @if($i['type'] == 'image')
                      <img src="{{str_replace(".jpeg","_mini.jpeg",str_replace(".jpg","_mini.jpg",$i['file']))}}" alt="">
                    @else
                      <iframe width="420" height="315"
src="{{ $i['file'] }}">
</iframe>
                    @endif
                </div>
                <div class="cbp-caption-activeWrap cbp-gray">
                    <div class="cbp-l-caption-alignCenter">
                        <div class="cbp-l-caption-body">
                            <i class="fa fa-expand enlarge-icon"></i>
                        </div>
                    </div>
                </div>
            </a>
        </div>
    @endforeach

【讨论】:

  • 我喜欢这个想法,但我得到“htmlspecialchars() 期望参数 1 是字符串,给定数组(查看:C:\Project\resources\views\clients\main.blade.php "
  • 你能找到错误发生在哪一行吗?
  • 我认为问题出在您的其他视图元素上,因为上面给出的刀片文件和控制器正在为我工​​作而没有任何语法错误。
  • 还有一件事你可以像这样传递视图文件名 return view("clients.main",$data);而不是 return view($this->folderPath."main",$data);
  • 显然是这一行:
猜你喜欢
  • 1970-01-01
  • 2011-07-04
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 2013-12-27
  • 2010-09-29
  • 2012-09-24
相关资源
最近更新 更多