salut,
j'ai une table groupe(id_groupe,nom_groupe). j'arrive a faire des enregistrements dans la base d'après lee tuto coobook, mais mon soucis est que je n'arrive pas à faire l'édition voici mon code du controller```
public function edit($id_groupe = null)
{

        if(!$id_groupe)
        {
            throw new NotFoundException(__('Identifiant invalide'));
        }
            $Post = $this->Groupe->findByidGroupe($id_groupe);
            if(!$Post)
            {
                throw new NotFoundException(__('Données Invalida'));
            }
            if($this->request->is(array('post','put')))
            {
                $this->Groupe->id_groupe = $id_groupe;

                if($this->Groupe->save($this->request->data))
                {
                    $this->Session->setFlash(__('Votre groupe as été mis a jour avec succès'));
                    return $this->redirect(array('action' => 'index'));
                }

                $this->Session->setFlash(__('Impossible de faire la mise a jour avec succès'));
                }
                if(!$this->request->data)
                {
                    $this->request->data = $Post;
                }
                $this->layout = 'admin';
    }
et dans ma vue j'ai ceci ```

<?php

echo $this->Session->flash();
//echo $this->Groupe->findByName('nom_groupe');

?>

<div class="panel panel-primary">
<div class="panel-heading">
    <h3 class="panel-title">Editer un groupe</h3>
  </div>
  <div class="panel-body">
    <?php

    echo $this->Form->create('Groupe',array('controller'=>'Groupes','action'=>'edit','class'=>'form-inline','id'=>'nouveau_groupe')); ?>
    <div class="col-md-12 line-input">
    <?php 
echo $this->Form->input('nom_groupe',array('label'=>'Entrez le nom du groupe &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;','class'=>'form-control','size'=>50));
?>

</div>
<div class="col-md-12 line-input">
    <?php 
echo $this->Form->input('id_groupe', array('type'=>'hidden'));
?>

</div>
<div class="col-md-10 line-input"><p class="pull-right"><?php
echo $this->Form->button('Modifier &nbsp;', array('type'=>'submit','class'=>'btn btn-primary btnvalider '));
echo $this->Form->button('Annuler', array('type'=>'reset','class'=>'btn btn-default btnannuler')); 

echo $this->Form->end();

?></p>
</div>

  </div>
  <div class="panel-footer"></div>
</div>

mon formulaire s'affiche avec les données à modifier mais seulement lorsque je veus sauvegarder on me renvoi ce message:
Error: The requested address '/networksolution/groupes/edit' was not found on this server.

comment résoudre le problème

2 réponses


Bonjour.
Pour commencer, en suivant un minimum les conventions de CakePHP, tu aurais un minimum de problème.
Dans les conventions de CakePHP, il est recommandé denommer la clé primaire : id.
Ensuite, il faudrait que tu m'expliques pourquoi tu définis un champ pour la clé primaire dans ton formulaire, si tu la redéfinie dans l'action de ton controller.
Pour ce qui est de définir dans l'action de ton controller l'id de l'enregistrement à sauvegarder, je te conseille comme ceci :

$this->request->data['Groupe']['id'] = $id\_groupe;

Après bien sûr avoir modifié le nom du champ de ta clé primaire dans la table.
Pour terminer, je ne comprends pas comment tu peux accéder à la partie du traitement du formulaire, étant donné que dès le début de ta fonction, tu renvois une exception dans le cas où la variable $id_groupe n'est pas définie.

romses
Auteur

Merci lartak pour ta réponse. En effet ces vrai qu'il est recommandé de nommer les clé id, mais par contre ces pas une obligation parceque qu'il offre la possibilité aussi de manipuler ses propres nom l'essentiel est de bien respecté les syntaxes que proposes cakephp.
Ayant suivit le tutos cakephphcookbook, sur la création d'un blog, j'ai voulu l'adapté à mon projet car lorsque j'appele ma vue edit je transmet en paramètre l'identifiant du champs à modifier et je l'applique un type="hidden", une fois les modifications faites, jenregistre juste le champs qui à pour id l'idéé passé en paramètre dans le formulaire