Il y a plus simple pour passer des paramètres dans l'url.
Premièrement, ta fonction verify se déclare comme ça :
public function verify($token = null, $username = null){}
Puis, tu envoies le lien comme suit : http://www.grafikart.fr/forum/posts/get/35684
<?php echo Router::url(array('controller' => 'users', 'action' => 'verify', 'token' => $hash, 'username', $this->data'User']'username']));
Ainsi, ta fonction verify devrait être comme ceci (je l'ai un peu améliorée) :
public function verify($token = null, $username = null) {
if (!empty($token) && !empty($username)){
// results va aller chercher un utilisateur avec le username $username et le token $token
$results = $this->User->findByUsernameAndTokenhash($username, $token);
// Si le résultat est vide, c'est que le token ou le username fournis sont incorrects
if(empty($results){
$this->Session->setFlash(__('This link is not valid'), 'alert', array(
'plugin' => 'TwitterBootstrap',
'class' => 'alert-error'
));
return $this->redirect(array('action' => 'login'));
}
//check if the user is already activated
if (!$results'User']'active']){
//Set activate to 1
$results'User']'active']=1;
//Save the data
$this->User->save($results);
$this->Session->setFlash(__('Your registration is complete'), 'alert', array(
'plugin' => 'TwitterBootstrap',
'class' => 'alert-sucess'
));
return $this->redirect(array('action' => 'login'));
} else {
$this->Session->setFlash(__('Your account is already activated'), 'alert', array(
'plugin' => 'TwitterBootstrap',
'class' => 'alert-warning'
));
return $this->redirect(array('action' => 'login'));
}
}
}