как вставлять видео в код laravel

Я работаю над проектом, в котором я храню видео-ссылки 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> 

Для всех, кто хочет вставить видео в 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

К счастью, мне удалось найти решение моей проблемы. Надеюсь, это тоже поможет вам. Используйте URL-адрес, который присутствует в инструкции embed. например, если вы перешли на YouTube и нажмите ссылку для встраивания этого видео, вы получите это

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

теперь используйте url, который присутствует в теге src. Это работает с другими услугами видео-хостинга, такими как VEVO.

Надеюсь, поможет..

У меня такая же проблема, но консоль поймает эту ошибку:

Отказался от отображения «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 

Используйте простой тег лезвия в представлении

{!! $ url !!} ЭТО БУДЕТ ОКАЗАТЬ ВИДЕО

вместо

{{$ url}} ЭТО НАПИСАЕТ КАК СТРОКА (например, на входе)

как выглядит ваш «layouts.master»? любой HTML-код в вашем браузере? посмотрите: ваш index.blade.php должен быть закодирован в UTF-8 БЕЗ «БОМИ» (в вашем редакторе)!

'@layout (' layouts.master ')' должен быть самым первым (эта же проблема для меня вчера в L4).