I have an array variable $screenshots that I am trying to pass to my Laravel view. Usually, I would use the @foreach and loop through the array, but I want to pass the full array to a Vue component by defining it as a prop. I want to do this so that I can loop over the array in the component. I am getting the htmlentities() expects parameter 1 to be string, array given error. 
What is the proper way to do this with VueJS and Laravel?
Here is my blade template:
@section('content')      <ticket-edit id="edit-ticket" single-ticket="{{ $ticket }}" screenshots="{{ $files }}">      </ticket-edit>  @endsection   Here is my custom component (different file):
<script>     export default {          template: '#edit-ticket-template',          props: ['SingleTicket', 'screenshots'],          data: function() {             return {                 ticket: [],                 screenshots: []             };         },          methods: {             getTicket() {                 return this.ticket = JSON.parse(this.SingleTicket);             },              getScreenshots() {                 return this.screenshots = JSON.parse(this.files);             },              createNotes: function () {                 var ticketNotes = $('.summernote');                 ticketNotes.summernote({                     height: 260,                     toolbar: [                         ['style', ['bold', 'italic', 'underline', 'clear', 'strikethrough']],                         ['fontsize', ['fontsize']],                         ['para', ['ul', 'ol']],                     ]                 });             }         },          created: function() {             this.getTicket();             this.getScreenshots();         },          ready: function() {             this.createNotes();         }      } </script>   EDIT: When I am adding attachments, I am using json_encode to encode the path to the attachments. Then when I retrieve them, I run json_decode in my model like so $files = json_decode($ticket->screenshots); So my controller looks like this:
public function edit($sub_domain, $id) {     $ticket = Ticket::find($id);     $files = json_decode($ticket->screenshots);      return view('templates.tickets-single', compact('ticket', 'files')); } 
                This works - it was hard to find this answer on the web so I hope it helps! You have to bind it.
 <edit-ticket-template       v-bind:SingleTicket="{{  json_encode($ticket) }}"       v-bind: screenshots ="{{  json_encode($files) }}"   >   </edit-ticket-template>   Yeah I don't think you need to json_encode the single ticket but you get the point.
I think Blade calls htmlentities() automatically when you write {{ $ticket }}.  Since $ticket is not a string, it is erroring.  Try {{ json_encode($ticket) }}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With