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

122
Visualizações
JS envía una matriz a la función php pero da un error de conversión de matriz a cadena al implosionar

Tengo una llamada axios bastante simple dentro de un componente vue donde tomo una matriz de los datos y la envío a través de la URL de publicación a una clase php que está tratando de trabajar con ella. El problema actual es que cuando llega a la función php, obtengo un error de conversión de matriz a cadena, aunque siento que la estructura es correcta dentro del objeto de datos en vue.

La función Tne php es:

 public function testStores( array $stores = null){ $storeTest = empty($stores) ? '' : "STORES:".implode(',',$stores). "; }

Implode no funciona aquí debido al problema de matriz a cadena, pero espero que $storeTest me dé "5, 10" en este caso. Solo una cadena separada por comas hecha a partir de los ID.

¿Qué he hecho mal?

ACTUALIZACIÓN: estoy descargando la matriz ahora, justo antes de llamar a la función de implosión, y esto es lo que se imprime:

 array:2 [ 0 => array:1 [ "id" => "5" ] 1 => array:1 [ "id" => "10" ] ] 

 var vm = new Vue({ el: "#app", data: { stores: [ {id: "5"}, {id: "10"} ] }, methods: { getStores(){ axios({ method: 'post', url: test, data: { stores: this.stores } }).then(function (response) { }).catch(function (error) { }); } } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <button @click="getNames()">TEST</button> </div>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está enviando una estructura complicada a través del backend que tiene que masajear para que pueda implosionar. Aquí se explica cómo masajearlo en una matriz plana.

 <?php // This is the data coming from the front end. $post = '{ "stores":[ { "id":"5" }, { "id":"10" } ] }'; // Decode it into an array $input = json_decode($post, true); // You now have an array that looks like this, // Array // ( // [stores] => Array // ( // [0] => Array // ( // [id] => 5 // ) // [1] => Array // ( // [id] => 10 // ) // ) // ) // Grab the sub-array from under `stores`. $idList = $input['stores']; // You now have an array that looks like this, // Array // ( // [0] => Array // ( // [id] => 5 // ) // [1] => Array // ( // [id] => 10 // ) // ) // You have to now flatten the array so that you have a single list of IDs like, [5, 10] // You can use this, https://stackoverflow.com/a/8755001/296555 $flatArray = array_map('current', $idList); // Now you can pass that to your function, function testStores( array $stores = null) { return empty($stores) ? '' : "STORES:".implode(',',$stores); } echo testStores($flatArray);

Como señala @ADyson, sería mejor que el front-end pasara una lista simple al back-end. Intenta que pase algo como,

data: [5,10]

Puede pasar eso directamente a su función después de json_decoding it.

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