2016-10-03 8 views
2

laravel form selectの '@'記号の値に問題があります。 「@」を持つ文字列はすべてコードに変換されているようです。しかし、これはサーバー(centOSサーバー)でのみ発生します。私のローカルマシンでは正常に動作します。Laravel Form Builder '@'がコードに変換された文字列

以下の画像は、自分のローカルでどのように動作しているのかを示しています。

enter image description here

次にこれはCentOSのサーバーに、私はこれを修正するにはどうすればよい

enter image description here

ある方法ですか?それはサーバーの設定にありますか、これを捕まえる必要がありますか?私はそれらの値のhtmlentitiesを入れようとしましたが、それでもそのように動作します。それがcentOSで動かない原因となっているものは本当にわかりません。あなたの返信をありがとう。

これは、jsonオブジェクトが設定ファイルで作成された方法です。

'group'=>[ 
      'type'=>'choice', 
      'optional'=>[ 
       'label' => 'Group', 
       'choices'=>function(){ 
        return Modules\Group\Entities\Group::all()->lists('name','id')->toArray(); 
       }, 
       // 'multiple' => true, 
       'attr' => ['multiple' => 'multiple', 'class' =>'multiselect-checkbox'] 
      ] 
     ], 

そして、これは、それらがどのようにレンダリングされるかについての図です。これは、ブレードファイルではないPHPファイルです。

<?= Form::select($name, (array)$emptyVal + $options['choices'], $options['selected'], $options['attr']) ?> 
+1

単に '{{'@'}}'を実行してください。それでおしまい。これは文字列リテラルとして扱われます。 – Andrew

+0

ビューでフォームフィールドをどのようにレンダリングしていますか? –

+0

値はデータベースから取得されています。どのように私はそれを逃れることができますか? – banri16

答えて

2

あなたはすべてがあなたの戦略に依存して代わり{!! !!}または{{ }}におけるブレードの使用中括弧で間違ったタグ<?= ?>を使用している、私はあなたがdocumentationを見てお勧めします。あなたのコードは次のようでなければなりません

:デフォルトでは

{!! Form::select($name, (array)$emptyVal + $options['choices'], 
         $options['selected'], $options['attr']) !!} 

、ブレイド{{}}文が自動的にXSS攻撃を防ぐために PHPのにhtmlentities関数を介して送信されます。

documentationを確認してください。

Tho @ジョナトンを知って私を{!! !!}私はキーを速くしていた。

+0

それは '{!! !!} '構文?いくつかのHTMLコードで 'htmlentities'を実行したくない場合、' <', '> '文字などをエンコードします。あなたが入れていることは分かっていますが、どういうわけかは分かりませんが、 '{ !! !!} ' – Jonathon

+0

@Jonathon btw問題は彼のCentOSが何らかの理由で@記号をコードとしてコンパイルしていたので、同時に彼はブレードにいくつかの問題を抱えていましたが、私はlatersを見ることを約束しましたが、あなたのアップデートも –

+0

@Jonathonあなたはこのアップデートに同意しますか? –

関連する問題