Ben dans mon UsersController.php j'ai :
Une fonction signup()
et une fonction contact()
UsersController.php
public function signup(){
$user = $this->Users->newEntity($this->request->data,['validate' => 'Signup']);
$this->set('user', $user);
if (!empty($this->request->data)) {
if ($this->request->is(['post', 'put'])) {
//$validaor = $this->Users->patchEntity($user ,$this->request->data);
$validaor = $this->Users->newEntity($this->request->data,['validate' => 'Signup']);
if ($validaor->errors()) {
$this->set('_errors', $validaor->errors());
$validaor->errors();
$this->set('user', $user);
}else{
$token = md5(time() . '-' . uniqid());
$now = Time::parse();
$UsersTable = TableRegistry::get('Users');
$Users = $UsersTable->newEntity();
$Users->mail = $this->request->data['mail'];
$Users->username = $this->request->data['username'];
$Users->nom = $this->request->data['nom'];
$Users->prenom = $this->request->data['prenom'];
$Users->password = (new DefaultPasswordHasher)->hash($this->request->data['password']);
$Users->token = $token;
$Users->role = "membre";
$Users->created = $now->i18nFormat('dd-MM-yyyy');
$Users->active = 0;
$Users->tokens = 0;
$Users->tokens_bonus = 0;
if ($this->Users->save($Users)) {
$this->Flash->success(__('Votre compte a bien été crée, vous allez recevoir un E-Mail pour activer votre compte.'));
# code...
$email = new Email('default');
$email->template('welcome');
$email->viewVars([
'token' => $token,
'id' => $Users->id,
'prenom' => $Users->prenom,
'nom' => $Users->nom
])
->emailFormat('html')
->from(['dinasty-corp@hotmail.fr' => 'Dinasty-Serv'])
->to($this->request->data['mail'])
->subject('Bienvenu chez Dinasty-Serv')
->send();
$this->redirect(['controller' => 'pages'] );
}
}
}
}
}
public function contact(){
$this->loadModel('categories');
$demande = $this->categories->find('list')->where(['type' => 'contact'])->toArray();
$this->set('demande', $demande);
if ($this->request->is('post')) {
$validation = $this->Users->newEntity($this->request->data,['validate' => 'Contact']);
debug($validaor);
if ($validaor->errors()) {
$this->Flash->error(__('Une erreur est survenu.'));
}
}
}
Ben en gros pour le formulaire de contact il utilise les règle de la fonction Signup du UsersTable.php
et pour le $validator = new Validator();
Dabs la doc de cakephp 3 :/
use Cake\Validation\Validator;
$validator = new Validator();
http://book.cakephp.org/3.0/fr/core-libraries/validation.html