Bonjour,
Je m'excuse de vous déranger.
J'ai une question par rapport au tutoriel du système de membres avec CakePHP.
Lors de l'édition d'un compte, on peut modifier le Prénom, Nom et le mot de passe.
Dans la base de données et la table « users », j'ai rajouté un champs « psn » (Compte Playstation Network).
J'aimerais qu'on puisse modifier ce champs lors de l'édition du compte.
Mais cela ne marche pas.
Ma question est comment rajouter d'autres champs, finalement.
Code « edit.ctp » (View) :
<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('firstname',array('label'=>"Prénom", 'placeholder'=>"Votre Prénom")); ?>
<?php echo $this->Form->input('lastname',array('label'=>"Nom", 'placeholder'=>"Votre Nom")); ?>
<?php echo $this->Form->input('pass1',array('label'=>"Mot de passe", 'placeholder'=>"Votre Mot de passe")); ?>
<?php echo $this->Form->input('pass2',array('label'=>"Confirmer le mot de passe", 'placeholder'=>"Confirmation")); ?>
<?php echo $this->Form->input('psn',array('label'=>"PSN", 'placeholder'=>"Nom d'utilisateur Playstation Network")); ?>
<?php echo $this->Form->input('test',array('label'=>"test",
<?php
$options = array(
'label' => 'Valider',
'value' => 'Send',
'id' => 'profil'
);
?>
<?php echo $this->Form->end($options); ?>
Code « UsersController » :
function edit(){
$user_id = $this->Auth->user('id');
if(!$user_id) {
$this->redirect('/');
die();
}
$this->User->id = $user_id;
$passError = false;
if($this->request->is('put') || $this->request->is('post')) {
$d = $this->request->data;
$d'User']'id'] = $user_id;
if(!empty($d'User']'pass1'])) {
if($d'User']'pass1'] == $d'User']'pass2']) {
$d'User']'password'] = Security::hash($d'User']'pass1'],null,true);
}
else {
$passError = true;
}
}
if($this->User->save($d,true,array('firstname','lastname','password','psn'))) {
$this->Session->setFlash("Votre profil a bien été édité.","notif");
}
else {
$this->Session->setFlash("Impossible de sauvegarder","notif",array('type'=>'error'));
}
if($passError) $this->User->validationErrors'pass2'] = array('Les mots de passe ne correspondent pas');
}
else {
$this->request->data = $this->User->read();
}
$this->request->data'User']'pass1'] = $this->request->data'User']'pass2'] = '';
}
Code « User.php » (Model) :
<?php
class User extends AppModel{
public $validate = array(
'username' => array(
array(
'rule' => 'alphanumeric',
'required' => true,
'allowEmpty' => false,
'message' => "Votre pseudo n'est pas valide"
),
array(
'rule' => 'isUnique',
'message' => 'Ce pseudo est déja pris'
)
),
'mail' => array(
array(
'rule' => 'email',
'required' => true,
'allowEmpty' => false,
'message' => "Votre email n'est pas valide"
),
array(
'rule' => 'isUnique',
'message' => 'Cet email est déjà pris'
)
),
'password' => array(
'rule' => 'notEmpty',
'message' => "Vous devez entrer un mot de passe",
'allowEmpty' => false
),
'psn' => 'psn'
);
}
Debug :
\app\View\Elements\debug.ctp (line 12)
array(
'Config' => array(
'userAgent' => 'e353ac1e6f2bd155ad80c58b8bc491d9',
'time' => (int) 1361378161,
'countdown' => (int) 10
),
'Auth' => array(
'User' => array(
'id' => '5',
'username' => 'test',
'mail' => 'test@hotmail.fr',
'created' => '2013-02-18 16:31:58',
'lastlogin' => '2013-02-20 11:44:50',
'active' => '1',
'firstname' => 'Adrien',
'lastname' => 'Boisson',
'psn' => ''
)
),
'Message' => array()
)
Merci d'avance de votre aide ! =)
Amicalement,
DexX