Changer les valeurs pour un select depuis un find
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:
Code:
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']);
} |
vue de Users/add:
Code:
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> |
merci d'avance de vos réponses.