Bonjour à vous,
j'ai utilisé bake pour générer mes différents controllers et vue.
Donc j'ai mes tables Users(id, first_name, last_name, id_role, email) et Roles(id, designation), donc id_role possède une clef étrangère pointant sur id de Roles
alors cake m'a généré une vue Users/add et y'a bien le champ Role, mais il affiche que les ids de la table Roles dans un select.
et je voudrais qu'il affiche la désignation, et mette l'id de role en value pour le select.
j'ai essayé de mettre 'all' à la place de 'list' dans le find, mais à la place d'afficher les ids j'ai un tableau {"id":2, "designation":"toast"}
et je ne sais pas comment créer un select avec comme values les ids de role et affiche les désignation pour l'utilisateur.
j'ai essayé de faire un debug() sur $roles mais ça affiche un tableau avec la requête SQL
fonction add de UsersController:
vue de Users/add:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public function add() { $user = $this->Users->newEntity(); if ($this->request->is('post')) { debug($this->request->data); $user = $this->Users->patchEntity($user, $this->request->data); if ($this->Users->save($user)) { $this->Flash->success('The user has been saved.'); return $this->redirect(['action' => 'index']); } else { $this->Flash->error('The user could not be saved. Please, try again.'); } } $session = $this->request->session(); $currentUser = $session->read('Auth.User'); $role = $currentUser['role_id']; $rolePossible = ''; // on définie le rôle que peut attribuer l'utilisateur en cours. if($role == 2){ $rolePossible .= '3'; }else if($role == 3){ $rolePossible .= '4'; }else if($role == 1){ $rolePossible .= '2'; } $condition = array("Roles.id >=" => $rolePossible); $roles = $this->Users->Roles->find('all', array('conditions' => $condition)); // donc ici j'ai changé j'ai mit all à la place de liste $groups = $this->Users->Groups->find('all', ['limit' => 200]); $this->set(compact('user', 'roles', 'groups')); $this->set('_serialize', ['user']); }
merci d'avance de vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <div class="actions columns large-2 medium-3"> <h3><?= __('Actions') ?></h3> </div> <div class="users form large-10 medium-9 columns"> <?= $this->Flash->render('error') ?> <?= $this->Form->create($user); ?> <fieldset> <legend><?= __('Add User') ?></legend> <?php echo $this->Form->input('role_id', ['options' => $roles]); echo $this->Form->input('email'); echo $this->Form->input('first_name'); echo $this->Form->input('last_name'); echo $this->Form->input('password'); echo $this->Form->input('groups._ids', ['options' => $groups]); ?> </fieldset> <?= $this->Form->button(__('Submit')) ?> <?= $this->Form->end() ?> </div>
Partager