Bonjour, je cherche a utiliser le <?= $this->Form->input() ?> pour modifier la valeur d'une clé (quantitée) d'un tableau.

La vue :

<h1>Le panier</h1>
<table>
    <tr>
        <th>Actions</th>
        <th>Id d'article</th>
        <th>Code article</th>
        <th>Quantité</th>
    </tr>
    <?= debug($paniers); ?>
<?php foreach ($paniers as $f): ?>
    <tr>
        <td>
            <?= $this->Html->link('Supprimer', array('controller' => 'FntCommandePaniers', 'action' => 'delete', $f['FntCommandePanier']['article_id'])); ?>
        </td>
        <td><?= $f['FntCommandePanier']['article_id']; ?></td>
        <td><?= $f['FntCommandePanier']['prix']; ?></td>
        <td> <?= $this->Form->input($f['FntCommandePanier']['qte_dem']); ?></td>
        <td> <?= $this->Form->end('Mettre à jour'); ?></td>
    </tr>
    <?php endforeach; ?>
</table>

le controller :


    public function panier() {
        $lePanier = $this->Session->read('bag');
        if (!$lePanier) {
            throw new NotFoundException(__('Panier vide'));
        }
        $this->set('paniers', $lePanier);
        if ($this->request->is(array('post', 'put'))) {
            debug($this->request->data);
                $this->Session->setFlash(__('Famille mis à jour.'));
                return $this->redirect(array('action' => 'index'));

            $this->Session->setFlash(__('Impossible de mettre à jour la famille.'));
        }
    }

je ne sais pas si c'est possible, si vous connaissez une autre methode je suis preneur !

Merci !

1 réponse


Concernant la vue, nous voyons l'input et la fermeture du formulaire, mais pas son ouverture.
Pour ce qui est du controller, il n'y a aucun traitement effectué après la soumission du formulaire, que ce soit en base de données ou en session.
De plus, que pour vérifier l'existence d'une clé dans la session, tu peux utiliser ceci :

$this->Session->check('bag');

Donc pour ton cas, tu peux par exemple faire :


if ($lePanier = $this->Session->check('bag')){
    $this->set('paniers', $lePanier);
        if ($this->request->is(array('post', 'put'))) {
            debug($this->request->data);
                $this->Session->setFlash(__('Famille mis à jour.'));
                return $this->redirect(array('action' => 'index'));

            $this->Session->setFlash(__('Impossible de mettre à jour la famille.'));
        }
} else {
    throw new NotFoundException(__('Panier vide'));
}