私のホームページには、いくつかのブレード構文と混同されたインラインJavaScriptがありました。
<script type="text/javascript">
@if(Auth::user())
if(path.indexOf('/user/' + {{Auth::user()->id}} ) != -1) {
$( "#tabs" ).tabs();
};
@endif
</script>
Javascriptを外部のfile.jsに移動するまでは機能しました。ブレード構文が追加されるたびにエラーが発生しました。 javascript files.jsでブレード構文を融合する方法はありますか?運が悪かったので、file.blade.jsに名前を変更してみました...
これを試すと、JavaScriptファイルを_app/views
_フォルダーに保存し、名前を_xxx.blade.php
_に変更できます。そうです_.blade.php
_ ブレードエンジンは_.blade.php
_そして@include('your javascript filename')
を使用してjavascriptファイルをインクルードしますBladeで解析、それは機能します。
受け入れられたソリューションは機能しますが、これは間違いなくアンチパターンです。
これがそれを書いた人ではないのを見たら、私は何が起こっているのか非常に混乱するでしょう。
私の提案はあなたのPHPファイルにあり、外部ファイルに必要なすべての値を取得するブロックを持ってから、外部ファイルを呼び出します。
したがって、PHPファイルには、次のようなものがあります。
<script>
var userID = "{{ Auth::user()->id }}";
var isUser = "{{ Auth::user() }}"
</script>
{{ HTML::script('path/to/js/file.js') }}
そしてあなたのjavascriptファイルで:
if(isUser)
{
if(path.indexOf('/user/' + userID ) != -1) {
$( "#tabs" ).tabs();
};
}
私は@BrandonRomanoと同じことをしていましたが、より良いアプローチを見つけました。 PHPからJS変数に値を直接送信する: PHP-Vars-To-Js-Transformer
PHP:
JavaScript::put([
'foo' => 'bar',
'user' => User::first(),
'age' => 29
]);
JS:
console.log(foo); // bar
console.log(user); // User Obj
console.log(age); // 29
次のような名前空間を設定できます。
console.log(server.foo)
PHPから文字列を出力しているので、その文字列を'
で囲む必要があります。
<script type="text/javascript">
@if(Auth::user())
if(path.indexOf('/user/' + '{{Auth::user()->id}}' ) != -1) {
$( "#tabs" ).tabs();
};
@endif
</script>