使用MVC本身以yii形式发送电子邮件模板

时间:2014-05-01 04:35:27

标签: php yii template-engine

我正在设计一个电子邮件控制器,其中包含actionRegisterEmail和actionForgotPasswordEmail等操作。 如果没有设置数据,这将有助于我在浏览器中查看电子邮件,同时分配虚拟数据。

class EmailController extends Controller
{
    public $layout='email';

    public function actionForgotEmail(ResetPasswordEmail $forgotModel=null){
        if($forgotModel == null){
            $forgotModel = new ResetPasswordEmail;
            $forgotModel->name = "John Doe" ;
            $forgotModel->link = "a url" ;
        }
        return $this->render('reset_password',$forgotModel);
    }

}

当我发送这封电子邮件时,我将实例化控制器并获取他们返回的html,并使用$ this-> render返回。 根据我的想法很好,但是yii不允许我在实例化的控制器上调用动作方法,比如

 $emailController = Yii::app()->createController('email');
 $vary = $emailController->actionForgotEmail($reset);
 todb_and_mail($vary);

。 这样我就可以邮寄渲染的html,也可以用虚拟测试。但是我发现很多帖子都说没有实例化控制器使用组件。但我想要一个单独的视图并将数据传递给它。我们有更简单的替代方法吗?

1 个答案:

答案 0 :(得分:0)

只是为了帮助任何有同样怀疑的人。我实例化了一个虚拟控制器并设置了它的布局,然后调用了渲染方法。

class MailHelper extends CComponent {
    public static function getEmail($view_template,$data){
        $controller = new CController('Email');
        $controller->layout = "email" ;
        return $controller->render($view_template, $data, true);
    }
}

这样我就可以获得将变量和数据传递给view的功能。我们使用静态html直接从浏览器中查看视图文件,这实际上很简单我让其他事情变得复杂感谢{ {3}}指导我。