Bonjour à tous,
Je développe actuellement une application Web en utilisant CakePHP 3.3.5.
J'ai créé un formulaire de contact avec une vérification de l'email et du mot de passe.
Lorsque je valide le formulaire et que le champ de confirmation de l'email ou du mot de passe est vide, alors une erreur apparait. J'utilise pour ça la fonction "notEmpty" du Validator (Voir ci-dessous).
Cependant, lorsque j'entre un adresse email ou un mot de passe de confirmation qui n'est pas identique au premier, la vérification n'affiche aucune erreur et le formulaire est validé.
Voici ci-dessous les différentes fichiers et fonctions utilisées :
public function validationAccount(Validator $validator)
{
$validator
->notEmpty('email');
$validator
->notEmpty('confirm_email')
->add('confirm_email', 'no-misspelling', [
'rule' => ['compareWith', 'email'],
'message' => 'Les mails ne sont pas égaux',
]);
$validator
->notEmpty('password');
$validator
->notEmpty('confirm_email')
->add('confirm_password', 'no-misspelling', [
'rule' => ['compareWith', 'password'],
'message' => 'Les mot de passe ne sont pas égaux',
]);
return $validator;
}
<?= $this->Form->create($user, ['context' => ['validator' => 'account'], 'url' => '/users/create_account']) ?>
<fieldset>
<legend ></legend>
<legend class="title_create_account" ><?= __('Create Account') ?></legend>
<?php
echo $this->Form->input('email', ['id' => 'email', 'type' => 'email', 'name' => 'email', 'label' => false, 'placeholder' => __('email').'*']);
echo $this->Form->input('confirm_email', ['id' => 'confirm_email', 'type' => 'email', 'name' => 'confirm_email', 'label' => false, 'placeholder' => __('confirm email').'*' ]);
echo $this->Form->input('password', ['id' => 'password', 'type' => 'password', 'name' => 'password', 'label' => false, 'placeholder' => __('password').'*' ]);
echo $this->Form->input('confirm_password', ['id' => 'confirm_password', 'type' => 'password', 'name' => 'confirm_password', 'label' => false, 'placeholder' => __('confirm password').'*' ]);
?>
</fieldset>
<?= $this->Form->button( __('Submit') , array('class' => 'submit-class btn btn-block google btn-corridor') ) ?>
<?= $this->Form->end() ?>
public function createAccount()
{
$this->viewBuilder()->layout('layout_create_account');
$user = $this->Users->newEntity();
if (!empty($this->request->data)) {
$myRequest = $this->request->data;
$user = $this->Users->patchEntity($user, $myRequest);
$user->email = $myRequest['email'];
$user->password = $myRequest['password'];
if ($this->Users->save($user)) {
$id = $user->id;
} else {
$this->Flash->error(__('The user could not be saved. Please, tare some certified users at this adress with different house type.'));
}
}
$this->set('user',$user);
}
Merci !!
Salut houceni,
Voici ma classe contenant la méthode validationAccount(Validator $validator)
/**
* Users Model
*
*/
class UsersTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->table('users');
$this->displayField('id');
$this->primaryKey('id');
}
public function validationAccount(Validator $validator)
{
$validator
->notEmpty('email');
$validator
->notEmpty('confirm_email')
->add('confirm_email', 'no-misspelling', [
'rule' => ['compareWith', 'email'],
'message' => 'Les mails ne sont pas égaux',
]);
$validator
->notEmpty('password');
$validator
->notEmpty('confirm_email')
->add('confirm_password', 'no-misspelling', [
'rule' => ['compareWith', 'password'],
'message' => 'Les mot de passe ne sont pas égaux',
]);
return $validator;
}
/**
* Returns a rules checker object that will be used for validating
* application integrity.
*
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
* @return \Cake\ORM\RulesChecker
*/
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['email']));
return $rules;
}
}
Merci !
@houceni : Merci pour ton retour mais cela ne change pas grand chose à mon problème.
Le check de validation de l'email et du mot de passe n'est toujours pas pris en compte.
@houceni : Désolé pour le temps de réponse.
Avec la fonction $user->errors() rien ne s'affiche.
Du coup il ne m'a pas l'air d'y avoir d'erreur....
Merci,