2014-09-14 8 views
8

Sto solo giocando con Laravel 5, e sto avendo difficoltà ad usare la sintassi di template Blade. Sembra che tutti i miei personaggi speciali siano fuggiti. Ho qualcosa di sbagliato nel mio setup?Laravel 5.0 - Errori del modello di lama

solo per mostrare la mia messa a punto, ho aggiunto quanto segue per config/app.php:

Alias: 'Form' => 'Illuminate\Html\FormFacade', 'Html' => 'Illuminate\Html\HtmlFacade' Service Provider: 'Illuminate\Html\HtmlServiceProvider'

Ora qui è la mia vista lama:

@extends('layout') 

@section('content') 

    {{ Form::open() }} 

    {{ Form::close() }} 

@stop 

Ed è qui l'output nel browser:

<form method="POST" action="http://test.app:8000/categories/create" accept-charset="UTF-8"><input name="_token" type="hidden" value="m4RdpqdbbqQ2F7iwfDkSDKTzEmaBGNvpJbj5LnqE"> </form>

Ed ecco l'output di view-source:

<!doctype HTML> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <title>My Site</title> 
    </head> 
    <body> 

     <header></header> 

     <content> 
    &lt;form method=&quot;POST&quot; action=&quot;http://test.app:8000/categories/create&quot; accept-charset=&quot;UTF-8&quot;&gt;&lt;input name=&quot;_token&quot; type=&quot;hidden&quot; value=&quot;m4RdpqdbbqQ2F7iwfDkSDKTzEmaBGNvpJbj5LnqE&quot;&gt; 

    &lt;/form&gt; 

</content> 

    </body> 
</html> 

risposta

31

In Laravel 5, {{ }} sfuggiranno automaticamente. Quello che devi usare ora è {!! !!}.

{!! Form::open() !!} 

{!! Form::close() !!} 

più Info sul cambiamento può essere visto sul https://laracasts.com/discuss/channels/general-discussion/new-blade-tag-for-unescaped-data-thoughts (grazie a @ user1960364).

+4

Perfetto, grazie ... WTF !!! Perché Taylor lo cambia? Accetterà risposta appena possibile. – Gravy

+0

Vale la pena leggere: https://laracasts.com/discuss/channels/general-discussion/new-blade-tag-for-unescaped-data-thoughts – user1960364

+1

È stato modificato per motivi di sicurezza. È meglio fuggire. Avere impostazione predefinita per evitare di impedire ai programmatori pigri di commettere un errore. – Yada

1

Se è necessario utilizzare il vecchio (L4.2 o meno) la sintassi Blade, aggiungere le seguenti righe alla fine del registro AppServiceProvider @:

\Blade::setRawTags('{{', '}}'); 
\Blade::setContentTags('{{{', '}}}'); 
\Blade::setEscapedContentTags('{{{', '}}}'); 

Questo non dovrebbe essere fatto con leggerezza, e può rendere la tua applicazione più vulnerabile agli exploit XSS, quindi usala con cautela.

+1

Non direi che "potrebbe rendere l'applicazione più vulnerabile agli exploit XSS". La vecchia sintassi non è più vulnerabile agli exploit XSS della nuova sintassi. Finché si ricorda quale notazione utilizzare per l'escaping di variabili vulnerabili, la sintassi nuova o vecchia fa la stessa cosa. – orrd