2016-05-25 18 views
2

とJavascriptの呼び出し:Laravel 5.2私は、(現在は)私のmodule.blade.phpのコードの以下のビットを持っているブレードパラメータ

@section('scripts') 
    <script type="text/javascript"> 
     createMixin(['{{ $module }}']); 
    </script> 
@endsection 

説明

  • $モジュールは可変です単純なkey =>値でパックされたJSONを保持しますが、key => objectでも保持します。コントローラに以前にロードされ、blade.phpに表示されます。

例:

{ "タイトル": "タイトル"、 "名前": "ダミー"、 "ファイル": "ダミー"、 "レイアウト": "正常"、 "フィールド":[ { "名前": "BLA" }]}

  • 機能createMixin()は理想的でジェイドからHTMLを生成します$ moduleの中のオプション(既に存在します)。

問題は次のようになります。これは、エラーメッセージで終了処理を行います。「にhtmlentities()パラメータ1は、配列が与えられた文字列であることを期待」

は、これまでに完了:を私はすでにいくつかのことを試してみました:

@section('scripts') 
    <script type="text/javascript"> 
     var fields = $.parseJSON("{!! $module !!}"); 
     createMixin(fields); 
    </script> 
@endsection 

そして:

@section('scripts') 
    <script type="text/javascript"> 
     createMixin("{!! JSON.parse($module) !!}"); 
    </script> 
@endsection 

そして:

@section('scripts') 
    <script type="text/javascript"> 
     createMixin("{!! json_encode($module) !!}"); 
    </script> 
@endsection 

そして:

@section('scripts') 
    <script type="text/javascript"> 
     $(this).createMixin("{{ $module }}"); 
    </script> 
@endsection 

私はここにいくつかの記事を見て持っていた(ようなthis one)および他のソースでは、彼らはPHPの破メソッドを使用する人々に伝えるか、単に"{!! 。。!!}」しかし、これはすべてが同じエラーメッセージで終わる

質問:??私はここに見下ろす午前私が間違って何をやっている


編集:

として、私のJavascript関数をリクエストしました:

//generate one jade mixin 
function createMixin(module) { 
    //first load JSON... 
    var json = $.parseJSON(loadJSON(module["file"])); 
    //get options for mixin 
    var options = json.fields; 
    //detect jade file 
    var jadepath = RESOURCES_DIR + "views/jade/" + json.file + "/template.jade"; 

    //check if file exists 
    $.ajax({ 
     'url': jadepath, 
     'type': 'HEAD', 
     'error': function() {}, 
     'success': function() { 
      var html = renderJade(options, jadepath); 
      //save html into json 
      json.html = html; 
      var tmp = new Blob([html], { type: 'plain/text;charset=utf-8' }); 

     } 
    }); 
}; 
+0

あなたは、このメソッド 'createMixin()'が何をするのでしょうか?あなたは私たちにPHPの受信終了を示すことができますか? htmlentities()はパラメータ1が文字列であることを期待しているので、配列 ''はPHPの終わりに基づいています。 – Qazi

+0

@Qazi上記のJavascriptを追加しました。私はこの関数を呼び出し、生成されたhtmlで要素の内容を変更する予定です。このテストのために私はほとんどコメントしました。私はコードの最初の行だけを持っていました、残りはこれのためにコメントアウトされました。 – Mentenyia

+0

投稿した他の例のそれぞれについて同じエラーが発生していますか?最初のものがうまくいくように見えます。たぶん '$ module'に何が入っているかを二重にチェックしますか?あなたは単に 'var fields = {!! $ module !!} ' – Tama

答えて

0

申し訳ありませんが、解決策が見つかりました。

私は最初のPHPのパラメータ初期化しなければならなかった

:だから、合計で、それは次のようになり

@section('scripts') 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var module = {!! $json !!}; 
      createMixin(module); 
     }); 
    </script> 
@endsection 

:経由でJavaScript関数を呼び出す別途、その後

<?php $json = json_encode($module); ?> 

をと

<?php $json = json_encode($module); ?> 

@section('scripts') 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var module = {!! $json !!}; 
      createMixin(module); 
     }); 
    </script> 
@endsection 
関連する問題