2011-08-23 64 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教程。