Bonjour bonjour !
Je suis en train de suivre le tuto sur les zones membre et lors de la validation pour mail, j'ai un petit soucis.
Donc, voici l'action du controller :
function signup(){
if($this->request->is("post")){
$d = $this->request->data;
$d"User"]"id"] = null;
if(!empty($d"User"]"password"])){
$d"User"]"password"] = Security::hash($d"User"]"password"]);
}
if($this->User->save($d,true,array("username","password","mail"))){
$link = array("controller"=>"users","action"=>"activate",$d"User"]"username"]."-".md5($d"User"]"password"]));
App::uses("CakeEmail","Network/Email");
$mail = new CakeEmail();
$mail->from("no-reply@studart.be")
->to($d"User"]"mail"])
->subject("Votre inscription sur StudArt")
->emailFormat("html")
->template("signup")
->viewVars(array("username"=>$d"User"]"username"],"link"=>$link))
->send();
$this->Session->setFlash("Votre compt a bien été créé","notif",array("type" => "alert-success"));
}else{
$this->Session->setFlash("Il y a des erreurs dans le formualaire","notif",array("type" => "alert-error"));
}
}
}
Et le formulaire :
<?php
echo $this->Form->create("User",array("class" => "form-horizontal"));
echo $this->Form->input("username",array(
"div" => "control-group",
"label" => array(
"class" => "control-label",
"text" => "Login : "
),
"between" => "<div class='controls'>",
"after" => "</div>"
));
echo $this->Form->input("mail",array(
"div" => "control-group",
"label" => array(
"class" => "control-label",
"text" => "Email : "
),
"between" => "<div class='controls'>",
"after" => "</div>"
));
echo $this->Form->input("password",array(
"div" => "control-group",
"label" => array(
"class" => "control-label",
"text" => "Mot de passe : "
),
"between" => "<div class='controls'>",
"after" => "</div>"
));
?>
<div class="controls">
<?php
echo $this->Form->end(
array(
"label" => "S'enregistrer",
"class" => "btn"
)
);
?>
</div>
Et voici l'erreur que j'ai (enfin, LES erreurs si on compte la notice) :
Voilà, merci d'avance pour celui ou ceux qui m'aideront :)
Bonjour bonjour,
Merci de ta réponse, mais ce n'était pas ça. J'ai trouvé en fouillant la doc et SO. En fait, apparemment depuis une des dernière mise-à-jour, il faut tout le temps préciser la config à utiliser pour CakeEmail, même si on en a qu'une d'enregistrée, ce qui n'est pas des plus claire dans la doc...
Et donc, simplement mettre :
$mail = new CakeEmail("default");
Résout le problème.
Bonjour,
Je pense que ton tableau "$d" ne contient pas de valeur pour "$d'User']'mail']" (la première notice), ce qui fait que Cake considère ça comme un "null".
Ainsi l'appel à CakeEmail::to ne renvoie pas une instance de CakeEmail (permettant le chainage des appels), mais la valeur actuelle de "to". C'est ce qui genère l'erreur suivante.
Vérifie donc le contenu de $d et tout devrait rentrer dans l'ordre.