2013-06-06 20 views
5

Pracuję nad projektem, w którym przechowuję linki wideo youtube w bazie danych, a następnie pobrać te linki i za pomocą silnika szablonu ostrze próbuję umieścić je na stronie. Używam pętli do umieszczania filmów na stronie. Z jakiegoś powodu nie dostaję żadnego wideo w przeglądarce. Obejmuje on wspomnianą przestrzeń, ale niczego nie renderuje. Używam laravel 3. Oto kilka fragmentów kodu, jeśli one pomagają.jak osadzić wideo w kod laravel


To index.blade.php zmienna filmy

@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 

$ przeszedł ze sterownikiem.

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

All I get to pusta strona. Nie rozumiem, co robię źle. Używam twitter bootstrap do prototypowania css. Każda pomoc zostanie doceniona.

Oto jak master.blade.php jest 'głowa' wygląda następująco:

<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> 

To jest to, co pojawia się w firefox kiedy sprawdzać element.

<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> 
+0

Czy sprawdzić 'pustą stronę kod źródłowy '? Czy generuje iFrames? Jeśli tak, czy sprawdziłeś, czy linki działają w przeglądarce? –

+0

Generuje ramki iframe, a łącza działają w przeglądarce. – Xk0nSid

+0

@ Xk0nSid: Mam do czynienia z tym samym problemem. czy udało ci się znaleźć rozwiązanie? Nawet moja strona jest renderowana poprawnie, z poprawnymi linkami, ale wideo nie jest wyświetlane. – Gagan

Odpowiedz

-1

Jak wygląda Twój "layouts.master"? dowolny kod źródłowy html w przeglądarce? spójrz: twój "index.blade.php" powinien być zakodowany w UTF-8 BEZ "BOM" (w twoim edytorze) !!

"@layout (" layouts.master ")" musi być pierwszym (ten sam numer do mnie wczoraj w L4).

+0

to nie jest odpowiedź na to pytanie .. plzz dodaj to jako komentarz – Mingebag

+0

"@layouts (" layouts.master ")" to pierwsza rzecz. Dodałem treść master.blade.php "" w pytaniu. – Xk0nSid

1

Na szczęście udało mi się znaleźć rozwiązanie mojego problemu. Mam nadzieję, że to też powinno ci pomóc. Użyj adresu URL, który jest obecny w instrukcji osadzania. tak na przykład, jeśli goto youtube i kliknij na link embed z this wideo można dostać ten

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

teraz użyć adresu URL, który jest obecny w tagu src. Działa to z innymi usługami hostingowymi, takimi jak VEVO.

Nadzieja to pomaga ..

+0

tylko po to, aby dodać jeszcze jedno: wynikowy adres URL musi zaczynać się od http: //, a następnie dodać adres URL z tagu src: – Gagan

1

Mam ten sam problem, ale jest haczyk konsola ten błąd:

Refused to display 'URL' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

patrzę na nią tutaj i znalazłem ten post

Refused to display in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'

i to działa dla mnie.

Należy spróbować tego

@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 
2

dla nikogo szuka osadzić wideo w laravel, rzucić okiem na KaneCohen/embed. Działa świetnie z Youtube lub Vimeo (nie próbowałem innych źródeł) i nie musisz zadzierać z żadną logiką.Wystarczy zainstalować (podręcznik instalacyjny documentation) oraz:

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

Nie zapomnij założyć alias w ciebie config/app.php

+0

, który pomógł, dzięki. Czy jest mimo to dostępna, aby uzyskać miniaturę wideo przez to? – Neo

0

użyć prostego tag ostrza w widoku

{!! $ Url !!} TO uczynią WIDEO

zamiast

{{$ url}} To będzie zapisywać jako ciąg znaków (w wejściu na przykład)