Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

369
Views
How do I pass a PHP array to Vue.js?

I have trainers.inc.php file which generates array with data retreived from a database :

$trainers_meta[0] = array('Id' => $id, 'Name' => $name, 'Description' => $description, 'Experience' => $experience, 'Focus' => $focus, 'Fileformat' => $format, 'File' => $file);

I encoded the PHP array as JSON using the PHP json_encode() function :

$trainers_meta = json_encode($trainers_meta);

The conversion went without any warnings or errors for which I specifically checked. At the top of my index.php file I require the trainers.inc.php file :

require_once('trainers.inc.php');

At the bottom of the file I create a JavaScript variable with the converted JSON contents inside of a <script> tag :

<script>
    let trainersMeta = <?php echo $trainers_meta;?>;
</script>

At the bottom of the file I link to the Vue.js CDN :

<script src="https://cdn.jsdelivr.net/npm/vue@3.2.26"></script>

Above in the index.php file I try to echo out HTML code using the v-for attribute of Vue.js :

<div class="container" v-for="trainer in trainersMeta">
   <h1>Should appear on the page</h1>
</div>

But no content ever appears. My IDE tells me a warning that the trainersMeta variable is undefined. I get that Vue.js must see the variable before it's loaded which is why I initialize it before actually importing it's CDN. Besides it doesn't matter what file or position do I put the <script> tag at the variable is always undefined. I cannot simply initialize the variable inside of the Vue.js code because Vue.js is completely incompatible with PHP in this regard. Even putting all the Vue.js code inside of a <script> tag in index.php doesn't work and Vue.js code simply never compiles at all because of it. How can I pass a PHP JSON encoded variable to Vue.js for it to see/use it?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

For what it is worth, I've never used Vue.js before today. Everything I've gleaned, I picked up in about 5 minutes from the documentation.

You've:

  • created a variable (trainersMeta)
  • built a template (<div class="container")
  • loaded the Vue library (<script).

You haven't:

  • written a Vue application to use that data

You need to create an object that has a data method which returns the object you've created, and you need to call Vue.createApp with that object and then mount it on a container around your template.

Such:

<script>
  let trainersMeta = {
    Id: 123,
    Name: 'Bob'
  };
</script>
<div id="app">
  <div class="container" v-for="trainer in trainersMeta">
    <h1>Should appear on the page</h1>
    {{trainer}}
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@3.2.26"></script>

<script>
  const Trainers = {
    data() {
      return {
        trainersMeta
      }
    }
  }

  Vue.createApp(Trainers).mount('#app')
</script>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!