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);
}
}

私が得るのは空白のページだけです。私が間違っていることを理解していません。CSS のプロトタイピングに Twitter ブートストラップを使用しています。どんな助けでも大歓迎です。

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

幸いなことに、問題の解決策を見つけることができました。うまくいけば、それもあなたに役立つはずです。埋め込みステートメントに存在する 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

私は同じ問題を抱えていますが、コンソールはこのエラーをキャッチします:

「X-Frame-Options」が「SAMEORIGIN」に設定されているため、「URL」をフレームに表示することを拒否しました。

ここで探して、この投稿を見つけました

「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

この使用 {!! の代わりに、単に {{}} を使用できます。!!}

例えば ​​:

{!! $video->link !!}

于 2018-11-14T11:36:13.587 に答える