Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

341
Vistas
Laravel + Vue: pase una matriz PHP multidimensional al componente vue

En el archivo config/variables.php he definido los siguientes objetos como un arreglo multidimensional:

 <?php return [ [ 'name' => 'test1', 'surname' => 'test1' ], [ 'name' => 'test2', 'surname' => 'tes2' ], [ 'name' => 'tes3', 'surname' => 'test3' ] ];

Quiero usar estos datos en un componente Vue, por ejemplo, así:

 <template> <div> <div>Items:</div> <div v-for="i of items"> {{ i.name }} {{ i.surname }} </div> </div> </template> <script> export default { name: "Test", props: { items: [] } } </script>

Reúno el componente y los datos en una plantilla de hoja que contiene, entre otros, esto:

 <div>Begin of test</div> <Test :items="@json(Config::get('variables'))"></Test> <div>End of test</div>

Espero que Laravel pase los datos al componente que luego muestra una página simple que contiene los divs con los datos proporcionados. Lo que realmente veo en el navegador es esto:

 <div>Begin of test</div> ":"test1","surname":"test1"},{"name":"test2","surname":"tes2"},{"name":"tes3","surname":"test3"}]"=""> <div>End of test</div>

Por un lado, los datos parecen distorsionarse en el proceso. Además, los <div>Items:</div> del componente no aparecen en absoluto. Entonces parece que la llamada @json alguna manera rompe todo el componente. Mismo comportamiento usando {!! json_encode(Config::get('variables')) !!} en su lugar. Cuando acabo de enviar los valores de configuración directamente a un div como <div>@json(Config::get('variables'))</div> , la matriz completa se imprime limpiamente como JSON.

¿Por qué sucede esto y cómo puedo solucionarlo?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¡Ya casi has llegado!
Acaba de olvidar escapar del PHP en el elemento en su vista de hoja.
Debería ser;

 <div>Begin of test</div> <Test :items="{{ json_encode(Config::get('variables')) }}"></Test> <div>End of test</div>

Si desea usar la etiqueta @json , debe eliminar las comillas dobles. Ejemplo;

 <div>Begin of test</div> <Test :items=@json(Config::get('variables'))></Test> <div>End of test</div>

No soy un experto en JS, pero creo que esto se debe a que al pasar a :items (un atajo para v-bind) se trata como una expresión de JavaScript.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Actualiza tus variables.php

 <?php $return = array( array( 'name' => 'test1', 'surname' => 'test1' ), array( 'name' => 'test2', 'surname' => 'tes2' ), array( 'name' => 'tes3', 'surname' => 'test3' ) ); echo json_encode($return);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda