我正在尝试使用我创建的自定义类来发送邮件,这样我就可以保持控制器文件很薄。我创建了自定义类并将其放在components文件夹中。然后我补充道:
'sendMail' => array(
'class'=>'application.components.SendMail.',
),
在我的主配置文件中的主要组件下面。
这应该允许我直接访问该类吗?我尝试使用:
Yii::app()->SendMail->MailerConfirmation();
和
Yii:app()->MailerConfirmation();
我最终得到的就是错误。
有谁能告诉我如何添加自定义组件?也许我这样做是错的?
答案 0 :(得分:12)
首先它应该是:
'sendMail' => array(
'class'=>'application.components.SendMail',
),
注意最后“SendMail”而不是“SendMail”中没有dot。此外,此配置要求您在protected / components目录中具有php文件SendMail.php,该目录是名为“SendMail”的类,并且此组件扩展了CApplicationComponent。组件ID将使用较低的第一个字母,例如Yii::app()->sendMail
,这将返回“SendMail”类的实例。我不知道MailerConfirmation是什么,但如果这是SendMail对象的方法,那么你应该像Yii::app()->sendMail->MailerConfirmation()
如果这没有帮助,请发布一些代码并发布您遇到的错误。
答案 1 :(得分:2)
请注意,如果您不打算在配置文件中设置任何组件属性或使用其他CApplicationComponent功能,并且您的配置文件包含默认值:
'import'=>array(
'application.models.*',
'application.components.*',
),
您可以将您的SendMail.php类放在组件目录中,并通过以下方式调用它自动加载:
$mailer = new SendMail();
然后通过以下方式调用您的方法:
$mailer->MailerConfirmation();
如果您确实想使用CApplicationComponent,可能需要查看here或here以查看几个示例,以及Yii教程。