2014-09-14 24 views
8

Ich spiele gerade mit Laravel 5 herum und habe Probleme mit der Blade Templating Syntax. Es scheint, dass alle meine Sonderzeichen entkommen sind. Habe ich etwas falsch mit meinem Setup?Laravel 5.0 - Blade Template Fehler

Nur mein Setup zu zeigen, habe ich habe folgendes config/app.php:

Aliases: 'Form' => 'Illuminate\Html\FormFacade', 'Html' => 'Illuminate\Html\HtmlFacade' Dienstleister: 'Illuminate\Html\HtmlServiceProvider'

Jetzt ist hier meine Klinge Ansicht:

@extends('layout') 

@section('content') 

    {{ Form::open() }} 

    {{ Form::close() }} 

@stop 

Und hier ist die Ausgabe im Browser:

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

Und hier ist die Ausgabe von 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> 

Antwort

31

In Laravel 5, {{ }} wird automatisch zu entkommen. Was Sie jetzt brauchen, ist {!! !!}.

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

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

Mehr über die Änderung auf https://laracasts.com/discuss/channels/general-discussion/new-blade-tag-for-unescaped-data-thoughts (to @ user1960364 Dank) gelesen werden kann gesehen.

+4

Perfekt, danke ... WTF !!! Warum Taylor das ändern? Wird die Antwort so schnell wie möglich annehmen. – Gravy

+0

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

+1

Es wurde aus Sicherheitsgründen geändert. Es ist besser zu fliehen. Wenn der Standard als flüchtig erkannt wird, verhindern Sie, dass faule Programmierer einen Fehler machen. – Yada

1

Wenn Sie müssen die alte verwenden (L4.2 oder weniger) Blade-Syntax, fügen Sie die folgenden Zeilen an der Unterseite des AppServiceProvider @ Register:

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

Dies sollte nicht leicht durchgeführt werden und kann Machen Sie Ihre Anwendung anfälliger für XSS-Exploits, verwenden Sie sie daher mit Vorsicht.

+1

Ich würde nicht sagen, dass dies Ihre Anwendung anfälliger für XSS-Exploits machen könnte. Die alte Syntax ist nicht mehr anfällig für XSS-Exploits als die neue Syntax. Solange Sie sich daran erinnern, welche Notation für das Entwedern von anfälligen Variablen zu verwenden ist, tun entweder die neue oder die alte Syntax das Gleiche. – orrd