2011-08-23 67 views
7

我想使用我创建的自定义类发送邮件,以便我可以保持控制器文件精简。我创建了我的自定义类,并将其放在components文件夹中。我然后补充说:加载自定义Yii组件

'sendMail' => array(
    'class'=>'application.components.SendMail.', 
), 

在我的主要配置文件中的主要组件。

这应该让我直接访问该类正确吗?我尝试使用:

Yii::app()->SendMail->MailerConfirmation(); 

和:

Yii:app()->MailerConfirmation(); 

和所有我最终是错误的。

任何人都可以告诉我如何包括一个自定义组件?也许我这样做是错误的?

回答

12

首先,它应该是: “的SendMail”

'sendMail' => array(
    'class'=>'application.components.SendMail', 
), 

通知不存在到底 “的SendMail”,而不是点。另外,这个配置期望你有一个名为“SendMail”的类的protected/components目录下的php文件SendMail.php,并且这个组件扩展了CApplicationComponent。组件ID将以较低的首字母开头,例如Yii::app()->sendMail,这将返回“SendMail”类的实例。我不知道MailerConfirmation是什么,但如果这是一个SendMail对象的方法,那么你应该访问它像Yii::app()->sendMail->MailerConfirmation()

如果这没有帮助,那么请张贴一些代码,并发布你所得到的错误。

2

需要注意的是,如果你不打算在配置文件中设置任何组件的属性或使用其他CApplicationComponent功能和您的配置文件包括默认:

'import'=>array(
    'application.models.*', 
    'application.components.*', 
), 

你可以把你SendMail.php类的组件目录,它会自动加载由通过调用它:

$mailer->MailerConfirmation(); 

$mailer = new SendMail(); 

然后通过调用你的方法

如果您确实想使用CApplicationComponent,您可能需要查看herehere以获取几个示例以及Yii教程。