2013-06-06 11 views
5

Sto lavorando a un progetto in cui memorizzo i collegamenti video di youtube in un database e quindi recupero tali collegamenti e utilizzando il motore di template blade cerco di incorporarli nella pagina. Uso un loop per inserire video in una pagina. Per qualche motivo, non sto ricevendo alcun video nel browser. Copre lo spazio menzionato ma non rende nulla. Sto usando laravel 3. Ecco alcuni frammenti di codice, se aiutano.come incorporare il video nel codice laravel


Questa è l'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 

La variabile $ video viene passato da controllore.

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

tutto quello che ottiene è una pagina vuota. Non capisco cosa sto sbagliando. Sto usando twitter bootstrap per la prototipazione css. Qualsiasi aiuto sarà apprezzato.

Ecco come master.blade.php di 'testa' si presenta come:

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

Questo è quello che si presenta in Firefox quando ho ispezionare elemento.

<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

Hai controllato la pagina di 'vuota 'codice sorgente? Sta generando gli iFrame? Se sì, hai controllato che i link funzionino in un browser? –

+0

Genera iframe e i collegamenti funzionano nel browser. – Xk0nSid

+0

@ Xk0nSid: sto affrontando lo stesso problema. sei riuscito a trovare una soluzione. Anche la mia pagina è resa correttamente, con i collegamenti corretti ma il video non viene visualizzato. – Gagan

risposta

-1

come è il tuo 'layouts.master'? qualsiasi codice sorgente HTML nel tuo browser? dai un'occhiata: il tuo 'index.blade.php' dovrebbe essere codificato in UTF-8 WITHOUT 'BOM' (nel tuo editor) !!

'@layout (' layouts.master ')' deve essere il primo (lo stesso problema per me ieri in L4).

+0

questa non è una risposta per questa domanda .. plzz postalo come commento – Mingebag

+0

"@layouts ('layouts.master')" è la prima cosa. Ho aggiunto il contenuto di "" master.blade.php nella domanda. – Xk0nSid

1

Fortunatamente, sono riuscito a trovare una soluzione al mio problema. Spero che dovrebbe aiutarti anche tu. Utilizza l'url presente nell'istruzione embed. così per esempio se si goto YouTube e fai clic sul link embed di this video che si otterrebbe questo

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

ora utilizzare l'URL che è presente nel tag src. Funziona anche con altri servizi di hosting video, come VEVO.

Speranza che aiuta ..

+0

solo per aggiungere un'altra cosa: l'url risultante deve iniziare con http: // e quindi è possibile aggiungere l'url che si ottiene dal tag src – Gagan

1

Ho lo stesso problema, ma la cattura console questo errore:

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

cerco qui e ho trovato questo post

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

e che funzionano per me.

Si dovrebbe provare questo

@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

Per chiunque altro cercando di incorporare i video in laravel, dare un'occhiata a KaneCohen/embed. Funziona alla grande con Youtube o Vimeo (non ho provato altre fonti), e non devi fare casino con nessuna logica.Basta installare (guida all'installazione in documentation) e:

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

Non dimenticare di configurare l'alias in voi config/app.php

+0

che ha aiutato, grazie. È comunque disponibile per ottenere una miniatura del video attraverso questo? – Neo

0

Utilizzare un semplice tag lama nella vista

{!! $ Url !!} ciò renderebbe IL VIDEO

invece di

{{$ url}} Questo scriveremo come una stringa (in un ingresso per esempio)

Problemi correlati