Bonjour à tous ,
Suite à la mise en place d'un systéme MVC pour un projet, je rencontre un petit soucis.
En effet dans mon espace administration, je dispose d'une page qui liste les articles enregistrés dans ma BDD.
Lorsque je clique sur le boutton éditer je renvois l'id de l'article à ma vue qui doit se charger d'afficher l'article en question pour le modifier.
Le soucis vient du fait que je dispose de l'id dans ma View mais que j'en ai besoin également dans mon Controller pour créer ma fonction editer.
Je connais la méthode render pour passer du Controller à la View mais pas l'inverse ^^
Je link la page listant les articles pour imager mes propos :
<table class="table">
<thead>
<tr>
<th>POSTID</th>
<th>POSTTitre</th>
<th>Contenu</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
foreach ($datas as $data) : ?>
<tr>
<td><?= $data->id ?></td>
<td><?= $data->name ?></td>
<td><?= $data->getResume() ?></td>
<td><a class="btn btn-primary" href="admin.php?p=edit&id=<?= $data->id ?>">Editer</a></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<a href="admin.php?p=logout">Se déconnecter</a>
<?php
Quelqu'un aurait une solution?
Lorsque tu vas cliquer sur ton bouton éditer, il va charger une autre View au travers de ton Controller. A ce moment, tu pourras récupérer le contenu du $_GET["id"] pour faire tes traitements sur ton article.
C'est pas ton controller qui envoie les données à la vue? Logiquement t'es pas censé devoir envoyé dans le sens view->controller vu que les données vienne du controller
Bonjour.
Pour récupérer l'id, vu qu'il est passé dans l'url, tu peux facilement le récupérer avec $_GET['id']
.
Si tu as suivi la formation sur la POO de Grafikart, tu ne devrais avoir aucune difficulté pour ça, surtout qu'il parle justement du patern MVC et qu'il en montre un exemple.
Si tu utilies symfony
En utilisant de l'ajax, tu peux envoyer des données au controller.
Exemple :
$.ajax({
url : '{{ routeDediée }}' + DonneeAInjecter,
type : 'POST',
dataType : 'html'
});
Au niveau des routes,
routeDediée:
path: lienDeUrl/cequetuveux/{DonneeAInjecter}
defaults:
_controller: Ici, tu pointes vers le controller voulu ex: Bundle:controller:methode
Au niveau du controller:
public function methodeAction($DonneeAInjecter)
{
}