2016-08-05 53 views
1

我試圖創建創建用戶喜歡這種形式和這種形式將用於顯示的數據也使用表單模型綁定:在Laravel使用雙大括號集體

{{ Form::open(['url' => 'admin/users/create']) }} 

    <div class="form-group"> 
     {{ Form::label('first_name', 'First Name : ') }} 
     {{ Form::text('first_name', null, ['class' => 'form-control']) }} 
    </div> 

    <div class="form-group"> 
     {{ Form::label('last_name', 'Last Name : ') }} 
     {{ Form::text('last_name', null, ['class' => 'form-control']) }} 
    </div> 

{{ Form::close() }} 

但它不顯示的代碼實際的看法,所以我在瀏覽器中看到這樣的代碼:

<form method="POST" action="http://localhost:8000/admin/users/create" accept-charset="UTF-8"> 

    <input name="_token" type="hidden" value="X5MA46MJctYOYeMtZF1RoQKYmWDtAbsSoxwoOA8Y"> 

    <label for="first_name">First Name : </label> 
    <input class="form-control" name="first_name" type="text" id="first_name"> 

    <label for="last_name">Last Name : </label> 
    <input class="form-control" name="last_name" type="text" id="last_name"> 

</form> 

而是試圖用{!! !!}爲打開和關閉括號,代碼工作,並顯示實際視圖時。

我還是不明白爲什麼我不能使用{{ }}作爲我的支架使用laravel-collective,如果你看到這Project它工作正常。

也有點害怕XSS攻擊的就像laravel documentation上顯示偵測到的數據部分說:

注:呼應由用戶應用程序的 提供的內容時要非常小心。始終使用雙大括號語法來 轉義內容中的任何HTML實體。

對此有什麼有用的解釋?謝謝

注:我使用Laravel版本5.1.40(LTS)

回答

1

由於{{}}用於轉義HTML實體,以防止您的服務器顯示爲您輸入XSS攻擊/數據庫。

因此,如果有人在您的數據庫中插入了惡意代碼,那麼它對用戶不可執行,而只是在屏幕上打印出來。像這樣

$dbValue = "<script> Some evil code </script>"; 

{{ $dbValue }} 

它會作爲輸出這個

<script> Some evil code </script> 

而且由於Laravel集體HTML表單生成的HTML,爲您展示,那麼你必須使用{! !!}以防止逃跑。

{!! "<b>Bold Text</b>" !!} 

然後它會輸出這個

粗體文字

對於生成HTML它的罰款,但你要小心,你的價值觀被髮送到你的服務器,並正在顯示出一個用戶。在那裏,你總是必須使用{{}}來隱藏你的數據。

+0

如何使用表單模型綁定來顯示數據?我將不得不使用表單來顯示要編輯的數據。 –

+0

它會自動爲您的表單轉義您的模型數據值,因此無需擔心。 –

+0

@GujaratSantana有沒有理由不接受答案? –