如何将变量从控制器传递给UserMailer

时间:2018-02-25 10:10:19

标签: php cakephp cakephp-3.0

我想要的网址将在Email \ html \ forgot_password_email.ctp中提供

控制器中的方法

public function forgotPassword(){
$url = Router::url(['controller' => 'users', 'action' => 'reset'], true) . '/' . $passkey;
 $this->getMailer('User')->send('forgotPassword', [$user]);
}

UserMailer.php

->to($user->email)
    ->emailFormat('html')
    ->subject(sprintf('Forgot Password link  %s', $user->username))
    ->viewVars([
    'username'=> $user->username,
    'useremail'=>$user->email,
    'userid' => $user->id
    ])
   ->template('forgotPasswordEmail')

我可以在Email \ html \ forgot_password_email.ctp中打印这3个变量,例如username,useremail,userid,但我不知道如何打印网址

1 个答案:

答案 0 :(得分:1)

您似乎复制并粘贴但未阅读或理解手册中解释的内容whereHas()

send()的第二个arg是一个数组,它接受传递给你的邮件程序函数的args。所以只需在那里传递URL。甚至更好,因为这不属于控制器(记住:胖模型,瘦控制器):在模板中生成URL并传递令牌。