我正在设计一个电子邮件控制器,其中包含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,也可以用虚拟测试。但是我发现很多帖子都说没有实例化控制器使用组件。但我想要一个单独的视图并将数据传递给它。我们有更简单的替代方法吗?
答案 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}}指导我。