Я хочу добавить строку таблицы после того, как нажимаю на кнопку «Добавить в корзину», но проблема заключается в идентификаторе строки таблицы, я хочу сделать что-то вроде этого
что я хочу добавить после нажатия кнопки
function ajouter(idd, prix)
{
var test = idd;
var urlEdit = "{{
path('ajouterAuPanier', { 'id': "id" }) }}";
urlEdit=urlEdit.replace("id",test);
$.ajax({
method: 'POST',
url: urlEdit,
success: function(d)
{
if (d.msg == "success")
{
i++;
alert("Item Added");
var prixTotal = parseInt(document.getElementById('prixTotal').innerText);
prixTotal = prixTotal + prix;
document.getElementById('prixTotal').innerText = prixTotal;
var id = {{ panier.id|json_encode() }};
var table = document.getElementById("customers");
var row = table.insertRow();
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML =document.getElementById(idd+""+idd).innerHTML;
cell2.innerHTML = "<div id = "+id+id+id+">1</div><input type=\"submit\" name=\"+\" value=\"+\" style=\"margin-top: -11%;margin-left: 10%;\" onclick=\"updatePlus(i)\">" +
"<input type=\"submit\" name=\"-\" value=\"-\" style=\"margin-top: -19%;margin-left: 31%;\" onclick=\"updateMinus(i) \">\n";
cell3.innerHTML = "<div id = "+id+id+">"+prix+"</div>";
// document.getElementById('cartt').innerHTML + = "<div><td> PRODUIT AJOUTE </td><td> 1 </td></div>";
}
}
});
}
Действие моего контроллера:
public function ajouterauPanierAction($id)
{
$em = $this->getDoctrine()->getManager();
$produit = $em->getRepository(Produit::class)->find($id);
$test = $em->getRepository(Lignedecommande::class)->findExistant($id,$this->getUser()->getId());
count($test);
if (($produit != null)&&($test == null))
{
$lignedecommande = new Lignedecommande();
$lignedecommande->setProduitId($produit->getId());
$lignedecommande->setUserId($this->getUser()->getId()); //à changer avec le fos
$lignedecommande->setNomProduit($produit->getNom());
$lignedecommande->setImage($produit->getImage());
$lignedecommande->setEtat(0);
$lignedecommande->setQuantite(1);
$lignedecommande->setPrixTotal($produit->getPrix());
$em->persist($lignedecommande);
$em->flush();
$msg = "success";
}
else if ($test != null)
{
$line = $em->getRepository(Lignedecommande::class)->findExistant($id,$this->getUser()->getId());
$line[0]->setQuantite($line[0]->getQuantite()+1);
$line[0]->setPrixTotal($line[0]->getPrixTotal()+$produit->getPrix());
$em->flush();
$msg = "done";
}
return new JsonResponse(array('msg' => $msg));
}
что мне нужно получить:
<div id = "panier">
<td>{{ panier.nomProduit }} </td>
====> <td><div id = {{ panier.id }}{{ panier.id }}{{ panier.id }} > {{ panier.quantite }}</div>
<input type = "submit" name = "+" value = "+" style = "margin-top: -11%;margin-left: 10%;" onclick = "updatePlus({{ panier.id }}) ">
<input type = "submit" name = "-" value = "-" style = "margin-top: -14%;margin-left: 22%;" onclick = "updateMinus({{ panier.id }}) ">
</td>
<td><div id = {{ panier.id }}{{ panier.id }}> {{ panier.prixTotal }} </div><br></td>
</div>
способ, которым я помещаю этот идентификатор в javascript, не работает, есть ли способ сделать это?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если ваш код javascript находится внутри тега сценария, обычно он должен работать
<script type = "text/javascript">
document.getElementById('cartt').innerHTML + = "<div id=\"panier\">
<td>"+document.getElementById('nomP'+id).innerHTML+"</td><div id = "{{
panier.id }}{{ panier.id }}">1</div>";
</script>
Но если ваш код находится внутри внешнего кода javascript, я не уверен, работает ли он, потому что интерпретатор twig сначала отображает html-страницу перед загрузкой любых внешних файлов js. Итак, когда файл js загружен, интерпретатор twig завершил свою работу. Однако я не уверен в этом
В этом случае просто проверьте, передали ли вы панель переменных в свой контроллер.
на самом деле я работаю над страницей, которая расширяет макет, который содержит эту панель переменных
В действии вашего контроллера вы правильно отрисовываете шаблон? Даже если вы расширите макет, если панель переменных не будет передана в шаблон, который вы визуализируете, этот шаблон не узнает об этом.
в моем действии контроллера возвращается JsonResponse, а не представление
ОК. Обновите свой вопрос с помощью контроллера, пожалуйста
Шаблон макета, который вы расширяете, можете ли вы попробовать сделать {{dump (panier)}} внутри, чтобы увидеть, определена ли переменная panier?
Я только что нашел решение :) Я просто возвращаю panier.id из JsonReponse, и он сработал, чем вы, в любом случае за вашу помощь!
Пожалуйста. Да, это то, о чем я говорил о передаче значения в вашем ответе, потому что ваш шаблон его не знал.
ОК. Обновите свой вопрос с помощью контроллера, пожалуйста
не сработало, потому что он не знает {{panier.id}}