加载自定义Yii组件

时间:2011-08-23 14:45:08

标签: php yii swiftmailer

我正在尝试使用我创建的自定义类来发送邮件,这样我就可以保持控制器文件很薄。我创建了自定义类并将其放在components文件夹中。然后我补充道:

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

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

这应该允许我直接访问该类吗?我尝试使用:

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

Yii:app()->MailerConfirmation();

我最终得到的就是错误。

有谁能告诉我如何添加自定义组件?也许我这样做是错的?

2 个答案:

答案 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,可能需要查看herehere以查看几个示例,以及Yii教程。