2015-10-15 83 views
2

我有一個表格請求類來驗證我的數據,我使用了messages()方法返回像這樣的自定義驗證錯誤信息輸出HTML:Laravel 5.1如何在表單驗證錯誤消息

public function messages() 
{ 
    return [ 
     'name.valid_name' => 'The name is incorrect, please see the <a href="'.route('naming_conventions').'">Naming Conventions</a> page for instructions on naming.' 
    ]; 
} 

所以你可以看到我想在錯誤消息中輸出超鏈接來幫助用戶。當輸出錯誤信息,雖然所有的HTML標籤的已轉化爲實體,以便對什麼是真正的輸出是:

The name is incorrect, please see the &lt;a href=&quot;http://local.website.com/naming-conventions&quot;&gt;Naming Conventions&lt;/a&gt; page for instructions on naming. 

如何我在錯誤信息輸出HTML?

+0

的可能的複製[Laravel 5:用刀片顯示HTML(http://stackoverflow.com/questions/29253979/laravel- 5-display-html-with-blade) –

回答

3

原來這是我輸出這是導致HTML實體問題的錯誤的方式來響應返回的任何錯誤信息使用@if @endif聲明。我是做了以下內容:

@if (count($errors) > 0) 
    <div class="alert alert-danger"> 
     <strong>Whoops!</strong> There were some problems with your input.<br><br> 
     <ul> 
      @foreach ($errors->all() as $error) 
       <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
    </div> 
@endif 

我不得不改變<li>{{ $error }}</li><li>{!! $error !!}</li>

+0

如果有任何用戶輸入的值顯示在這些錯誤消息中,請小心。確保使用'e($ value)'來逃避那些 – andrewtweber

0

不要在消息本身中放置超鏈接。試試在你看來是否有與

@if($errors and $errors->has('name.valid_name')) 
he name is incorrect, please see the <a href="">Help link</a> 
@endif 
+0

我不能這樣做,因爲我在模板中輸出錯誤而不是視圖以防止重複代碼。否則,我必須把下面的代碼在每一個視圖頂部這似乎不符合邏輯: '如果(計數($錯誤)> 0)

\t Whoops! There were some problems with your input.

\t
    \t foreach ($errors->all() as $error) \t \t
  • {{ $error }}
  • \t endforeach \t
endif' – geoffs3310

+0

你總是可以做一個局部視圖並使用'@ include'語句或創建一個具有該'@ include'語句的子佈局,並在您擁有表單的所有視圖中使用它。 –

+0

如果你真的想要,你仍然可以輸出你的視圖中的html。 $ message !!}' –