Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

338
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda