Bonjour/bonsoir,
j'ai suivi le tuto pour développer un site à l'aide de cakephp mais j'ai un problème dans le formulaire pour choisir un rôle à l'utilisateur. J'ai le code suivant dans ma vue :

<?php 
        echo $this->Form->create('User');
        echo $this->Form->input('username', array('label' => 'Login'));
        echo $this->Form->input('password', array('label' => 'Mot de passe'));
        echo $this->Form->input('passwordconfirm', array('label' => 'Confirmer le mot de passe', 'type' => 'password'));
        echo $this->Form->input('role', array('label' => 'Rôle'));
        echo $this->Form->end('Envoyer'); 
?>

Et celui-ci dans mon Controller :

function admin_edit($id = null){
        if($this->request->is('post') || $this->request->is('put')){
            $d = $this->request->data'User'];
            if($d'password'] != $d'passwordconfirm']){
                $this->Session->setFlash('Les mots de passe ne correspondent pas.', 'notif', array('type' => 'error'));
            }else {
                $this->User->save($this->request->data);
            }
            $this->User->save($this->request->data);
        }elseif($id) {
            $this->User->id = $id;
            $this->request->data = $this->User->read('username, role');
        }
        $d = array();
        $d'roles'] = array(
            'admin' => 'admin',
            'user' => 'membre'
        );

Cakephp ne détecte pas que rôle est un select du tableau $d et me met un champ texte classique.

Merci d'avance pour votre aide.

7 réponses


Frankido
Auteur
Réponse acceptée

C'est bon j'ai réglé le problème merci de votre aide j'avais juste oublié d'envoyer $d à la vue ....
Merci encore de votre aide !

et avec
echo $this->Form->select('role', array('label' => 'Rôle'));

Frankido
Auteur

Le champ passe bien en select mais les rôles ne s'affichent pas (le label ne se place pas devant le champ mais peut être sélectionné).

Salut le faite que tu n'ais pas de champ id dans ta vue est normal ? ou tu ne l'a pas mis tout simplement sur le topic ?

Frankido
Auteur

Non c'est normal (j'ai suivi le tuto et grafikart ne met pas de champ id dans la vue)

a 34min58s il ajoute un input dans la vue pour l'id et par conséquent il ajoute dans la fonction admin_edit et read : l'id à côté de l'username et du role sans espace.

Juste pour info peux tu faire un debug de l'admin_edit et nous donner le résultat.