2017-06-25 5 views
0

次の問題があります。私はHTMLソースコードに次のコードを書いています。HTML {{}}のラーベル構文vs <?= ?>

 <form action = "/user/register" method = "post"> 
     <input type = "hidden" name = "_token" value = "<?=csrf_token()?>"> 

     <table> 
      <tr> 
       <td>Name</td> 
       <td><input type = "text" name = "name" /></td> 
      </tr> 

      <tr> 
       <td colspan = "2" align = "center"> 
        <input type = "submit" value = "Register" /> 
       </td> 
      </tr> 
     </table> 

     </form> 

私は{{csrf_token()}}<?=csrf_token()?>を変更すると、私はエラーが表示されます。(TokenMismatchException)。 なぜですか? Laravelの<?=?>{{}}の違いは何ですか?

答えて

1

{{ }}htmlspecialchars関数と<?= ?>または{!! !!}を自動的に呼び出してエスケープ文字列をエスケープしないでください。ブレードテンプレートについては、Displaying Dataのマニュアルを参照してください。しかし、{{ csrf_token() }}が働く必要があります。自動的に入力を追加する{{ csrf_field() }}を使用してみてください:

<form action = "/user/register" method = "post"> 
    {{ csrf_field() }} 

    <table> 
    <tr> 
     <td>Name</td> 
     <td><input type = "text" name = "name" /></td> 
    </tr> 

    <tr> 
     <td colspan = "2" align = "center"> 
      <input type = "submit" value = "Register" /> 
     </td> 
    </tr> 
    </table> 

</form> 
+0

私は問題だと思う/例では、私は、ブレードのテンプレートシステムを使用していないということでした。 –

+0

ファイル名に '.php'の代わりに' .blade.php'を追加するだけで、ブレードを使うことができます。 @RuthBusari –