Bonsoir,
Je suis actuellement en train de creer un formulaire d'inscription et j'ai un probleme lors de l'envoie du mail.
Mail :
Bonjour admin
Pour activer ce compte suivez ce lien :
Notice (8): Undefined variable: link [APP\View\Emails\html\signup.ctp, line 6]
Code Context
<p>Pour activer ce compte suivez ce lien : </p>
<p><?php echo $this->Html->link('Activer mon compte',$link); ?></p>
$viewFile = 'F:\wamp\www\2.7\app\View\Emails\html\signup.ctp'
$dataForView = array(
'content' => '',
'username' => 'admin',
(int) 0 => array(
'controller' => 'users',
'action' => 'activate',
(int) 0 => '33-a2b347966315bd7485521bab9984108b'
)
)
$content = ''
$username = 'admin'
include - APP\View\Emails\html\signup.ctp, line 6
View::_evaluate() - CORE\Cake\View\View.php, line 971
View::_render() - CORE\Cake\View\View.php, line 933
View::render() - CORE\Cake\View\View.php, line 473
CakeEmail::_renderTemplates() - CORE\Cake\Network\Email\CakeEmail.php, line 1708
CakeEmail::_render() - CORE\Cake\Network\Email\CakeEmail.php, line 1561
CakeEmail::send() - CORE\Cake\Network\Email\CakeEmail.php, line 1171
UsersController::signup() - APP\Controller\UsersController.php, line 22
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE\Cake\Controller\Controller.php, line 490
Dispatcher::_invoke() - CORE\Cake\Routing\Dispatcher.php, line 193
Dispatcher::dispatch() - CORE\Cake\Routing\Dispatcher.php, line 167
[main] - APP\webroot\index.php, line 118
/2.7/users/Activer mon compte
This email was sent using the CakePHP Framework
Mon UsersController :
<?php
class UsersController extends AppController{
function signup(){
if($this->request->is('post')){
$d = $this->request->data;
$d['User']['id'] = null;
$d['User']['lastlogin'] = '2015-10-03 12:17:00';
if(!empty($d['User']['password'])){
$d['User']['password'] = Security::hash($d['User']['password'],'sha1',true);
}
if($this->User->save($d,true,array('username','password','mail'))){
$link = array('controller'=>'users','action'=>'activate',$this->User->id.'-'.md5($d['User']['password']));
App::uses('CakeEmail', 'Network/Email');
$mail = new CakeEmail('default');
$mail->from('noreply@localhost.com')
->to($d['User']['mail'])
->subject('Inscription')
->emailFormat('html')
->template('signup')
->viewVars(array('username'=>$d['User']['username'],$link))
->send();
$this->Session->setFlash("Votre compte a bien été créé","notif");
}else{
$this->Session->setFlash("Merci de corriger vos erreurs","notif",array('type'=>'error'));
}
}
}
}
signup.php :
<p>
<strong>Bonjour <?php echo $username; ?></strong>
</p>
<p>Pour activer ce compte suivez ce lien : </p>
<p><?php echo $this->Html->link('Activer mon compte',$link); ?></p>
Merci d'avance pour votre aide !
Bonjour.
C'est normal, au lieu de transmettre une variable à ta vue, tu lui transmet un tableau.
Replaces par ceci :
<?php
->viewVars(array('username' => $d['User']['username'], 'link' => $link))
Par contre, l'utilisateur va avoir un soucis avec le lien que tu lui donnes, il faut que tu fasses un lien absolu et non relatif.
Par contre quel soucis il va avoir avec mon lien ?
Au lieu d'avoir le lien par exemple : http://tonsite.tld/users/activate/12-fhdfhfgfkfhfhdfdjd
, il va avoir /users/activate/12-fhdfhfgfkfhfhdfdjd
.
Il aura un lien relatif et non un lien absolu, ce qui ne lui permettra pas d'arriver sur ton site, que ce soit en copiant le lien ou en cliquant dessus.
As tu bien un élément qui se nomme notif ?
Est-ce que tu as bien ajouté <?= $this->Session->flash() ?>
dans ton layout ou sur la vue dans laquelle doit s'afficher le message ?
Bonjour,
Merci pour ton aide je testerai ça qand je rentrerai chez moi ! Par contre quel soucis il va avoir avec mon lien ?