Bonjour,
Pourquoi ne pas simplement laisser le code gérer les index de tes name ?
Juste en écrivant :
<tr v-for="(row, index) in rows">
<td><textarea name="description[]" value="" /> </textarea></td>
<td><input name="qte[]" class="text-right" type="text" v-model="row.quantity"></td>
<td><input name="prixuni[]" class="text-right" type="text" v-model="row.price"> €</td>
<td><input name="prixht[]" class="text-right" type="text" v-model="row.amount"> €</td>
<td><input name="prixttc[]" class="text-right" type="text" v-model="row.amount"> €</td>
<td><a href="#!" @click.prevent="add(index)">Ajouter</a> <a href="#!" @click.prevent="del(index)">Supprimer</a>
</td>
</tr>
Sinon... tu peux toujours essayer de les mettre à jour via du code...
(je n'ai pas le temps de chercher.. mais tu pourrais partir sur un truc du genre )
Vue.config.debug = true
var name=0;
new Vue({
el: "#app",
data: {
rows: [{
quantity: 0,
price: 0,
amount: 0
}],
total: 0
},
methods: {
updateRowNames(row){
console.log(row);
//la suite du code ici...
},
add(index) {
this.rows.splice(index + 1, 0, {
quantity: 0,
price: 0,
amount: 0,
})
this.updateRowNames(index);
},
del(index) {
this.rows.splice(index, 1)
}
},
watch: {
rows: {
handler() {
this.rows.map(row => row.amount = Math.round(row.price * row.quantity * 100) / 100)
this.total = Math.round(this.rows.reduce((accumulator, current) => accumulator + current.amount, 0) * 100) / 100
},
deep: true
}
}
})
Cordialement,
Jordane
Tu parles de quel code qui pourrait gérer les index ? PHP ou JS ?
Ta deuxième proposition est celle que j'envisagais mais je t'avoue que je ne vois pas trop comment coder ça sachant que je ne suis pas un expert en JS...
J'avais penser sinon réaliser l'incrémentation en PHP mais vu que l'ajout des inputs est en JS, même si je définit une variable $i, mon script copiera toujours la dernière valeur de i
Si oui.. testes et tu comprendras
J'ai donc récupéré mes champs avec et ceux, pour toutes les autres variables. J'ai mis tous ça dans une boucle for pour récupérer l'ensemble du tableau.