Reputation: 211
I have (currently) the following bit of code in my module.blade.php:
@section('scripts')
<script type="text/javascript">
createMixin(['{{ $module }}']);
</script>
@endsection
Explanation:
Example:
{ "title":"Title", "name":"dummy", "file":"dummy", "layout":"normal", "fields": [ { "name": "bla" } ] }
Problem is: This does end in an error message: "htmlentities() expects parameter 1 to be string, array given"
Done so far: I have already tried several things:
@section('scripts')
<script type="text/javascript">
var fields = $.parseJSON("{!! $module !!}");
createMixin(fields);
</script>
@endsection
And:
@section('scripts')
<script type="text/javascript">
createMixin("{!! JSON.parse($module) !!}");
</script>
@endsection
And:
@section('scripts')
<script type="text/javascript">
createMixin("{!! json_encode($module) !!}");
</script>
@endsection
And:
@section('scripts')
<script type="text/javascript">
$(this).createMixin("{{ $module }}");
</script>
@endsection
I have had a look at several posts here (like this one) and in other sources, they tell the people to use the php implode method or just a simple usage of "{!! !!}". But this all ends up in the same error message.
Question: What am I overlooking here? What am I doing wrong?
Edit:
As requested my Javascript function:
//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' });
}
});
};
Upvotes: 2
Views: 11448
Reputation: 211
Alright, so I found the solution.
I had to first do the parameter initialisation in PHP:
<?php $json = json_encode($module); ?>
And then separately call the Javascript function via:
@section('scripts')
<script type="text/javascript">
$(document).ready(function() {
var module = {!! $json !!};
createMixin(module);
});
</script>
@endsection
So in total it would look like this:
<?php $json = json_encode($module); ?>
@section('scripts')
<script type="text/javascript">
$(document).ready(function() {
var module = {!! $json !!};
createMixin(module);
});
</script>
@endsection
Upvotes: 1