5

我正在做一个项目,我将 youtube 视频链接存储在数据库中,然后检索这些链接并使用刀片模板引擎尝试将它们嵌入到页面中。我使用循环将视频放在页面中。出于某种原因,我在浏览器中没有收到任何视频。它覆盖了提到的空间,但没有渲染任何东西。我正在使用 laravel 3。如果有帮助,这里有几个代码片段。


这是 index.blade.php

@layout('layouts.master')

@section('content')

@foreach ($videos as $video)
    <h4>{{ $video->title }}</h4>
    <br>
    <div class="media">
        <div class="media-body">
            <iframe width="560" height="315" src="{{ $video->link }}" frameborder="0" allowfullscreen>
            </iframe>
        </div>
    </div>
    <br>
@endforeach

@endsection

$videos 变量是从控制器传递的。

class Videos_Controller extends Base_Controller
{
public $restful = true;

public function get_index()
{
    $videos = DB::table('videos')->get();
    return View::make('videos.index')
        ->with('title', 'Videos')
        ->with('videos', $videos);
}
}

我得到的只是一个空白页。我不明白我做错了什么。我正在使用 twitter bootstrap 进行 css 原型设计。任何帮助将不胜感激。

以下是 master.blade.php 的“头部”的样子:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $title }} </title>
    <meta name="viewport" content="width=device-width">
    {{ HTML::style('css/bootstrap.min.css') }}
    {{ HTML::style('css/bootstrap-responsive.min.css') }}
</head>

当我检查元素时,这就是 Firefox 中出现的内容。

<div class="media">

<div class="media-body">
    <iframe width="560" height="315" frameborder="0" allowfullscreen=""   src="http://www.youtube.com/watch?v=1iBm60uJXvs">
        #document
            <html>
                <head></head>
                <body></body>
            </html>
    </iframe>
</div>

</div>
4

7 回答 7

4

幸运的是,我确实设法找到了解决问题的方法。希望它也应该对您有所帮助。使用 embed 语句中存在的 url。因此,例如,如果您转到 youtube 并单击视频的嵌入链接,您会得到这个

<iframe width="420" height="315" src="//www.youtube.com/embed/BstTBw6BLrE" frameborder="0" allowfullscreen></iframe>

现在使用 src 标签中的 url。这也适用于其他视频托管服务,例如 VEVO。

希望能帮助到你..

于 2014-01-17T01:30:47.083 回答
2

对于其他希望在 Laravel 中嵌入视频的人,请查看KaneCohen/embed。它适用于 Youtube 或 Vimeo(没有尝试过其他来源),而且你不必搞乱任何逻辑。只需安装(文档中的安装指南)并:

@foreach ($videos as $video)
    <h4>{{ $video->title }}</h4>
    <div class="media">
        <div class="media-body">
            {!! Embed::make($video->link)->parseUrl()->getIframe() !!}
        </div>
    </div>
@endforeach

不要忘记在你里面设置别名config/app.php

于 2016-08-19T01:15:06.307 回答
1

我有同样的问题,但控制台捕捉到这个错误:

拒绝在框架中显示“URL”,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。

我在这里寻找它,我找到了这篇文章

拒绝在框架中显示,因为它将“X-Frame-Options”设置为“SAMEORIGIN”

这对我有用。

你应该试试这个

@layout('layouts.master')

@section('content')

@foreach ($videos as $video)
    <h4>{{ $video->title }}</h4>
    <br>
    <div class="media">
        <div class="media-body">
            <iframe width="560" height="315" src={{ $video->link + "&output=embed" }} frameborder="0" allowfullscreen>
            </iframe>
        </div>
    </div>
    <br>
@endforeach

@endsection
于 2014-11-05T06:50:54.213 回答
0

laravel -embed 包可以帮助您使用刀片组件嵌入 YouTube 视频(和其他视频):

<x-embed url="https://www.youtube.com/watch?v=oHg5SJYRHA0" />

您只需将视频的公共 URL 传递到 url 属性,包将处理其余部分。

此外,该软件包支持的所有服务(不仅仅是 YouTube)都有验证规则,并且开箱即用。

于 2020-08-31T16:55:55.997 回答
0

在视图中使用简单的刀片标签

{!!$url !!}这将呈现视频

代替

{{ $url }} 这将写为字符串(例如在输入中)

于 2017-03-08T16:57:07.750 回答
0

你可以简单地使用 {{}} 而不是这个使用 {!! !!}

例如 :

{!! $video->link !!}

于 2018-11-14T11:36:13.587 回答
-1

您的“layouts.master”看起来如何?您的浏览器中有任何 html 源代码吗?看看:你的'index.blade.php'应该用UTF-8编码,没有'BOM'(在你的编辑器中)!!

'@layout('layouts.master')' 必须是第一个(昨天在 L4 对我来说也是同样的问题)。

于 2013-06-06T09:28:24.093 回答