2011-07-25 110 views
0

我有一些使用原始php(包括配置文件)的文件,用於在我的服務器中自動發送郵件。在Yii中導入外部php文件

假設在這個文件中我定義了幾個常量(define(...))和一個填充了數據庫連接信息的數組,如用戶,主機等等。

該網站使用Yii完成,因此它也使用配置文件。

這些原始文件可以放置在任何地方(在受保護的,外部的,在index.php的相同級別,不管)。

現在問題出現了,我在Yii外部獲得了不同的配置文件(以及不同的用戶/數據庫密碼等等),但我需要在Yii的一些地方使用它。

有沒有一種清晰的方式將這些文件導入控制器?我已經將它們放在擴展名中,但原始函數從那裏不起作用。

+0

有信息太少去。發佈說明您的問題的最簡單的具體示例。 – Jon

+0

嗯,沒有什麼可說的,但我把它作爲第二段添加 – Korcholis

回答

0

最好的方法是看你是否可以把你的自定義代碼放入類文件中,並將它們放在組件目錄或類似文件中,並將你的文件轉換爲類(如果它們尚未)。這樣你就可以在沒有很多混合代碼的情況下獲得你的數據,這些代碼很難維護。

0

簡單的方法是將文件放入擴展中,並將擴展的路徑添加到yii配置中。然後製作一個控制器並從其操作中調用方法。讓我們考慮一個swiftmailer的例子。這是您可以使用的自定義控制器。

class mailerController extends Controller{ 

public function actions() 
{ 
    return array(
     //can add other actions here 
    ); 
} 
    public function actionIndex(){ 

     echo "use mailer?e=<email>&m=<message>&sub=<subject> to send mail from the site to the email address"; 

    } 


    public static function actionSendMail($e,$m,$sub){ 

     $content = $m ; // can use a template and then assign to content 
     $SM = new SwiftMailer(); //the external method, should be present in include path 
     // Get config 
     $mailHost = Yii::app()->params['mailhost']; 
     $mailPort = 25; // Optional 
     $Transport = $SM->smtpTransport($mailHost, $mailPort); 
     $Mailer = $SM->mailer($Transport); 
     $Message = $SM 
      ->newMessage($sub) 
      ->setFrom(Yii::app()->params['sitemail']) 
      ->setTo($e) 
      ->addPart($content, 'text/html'); 
     return ($Mailer->send($Message)); 
    } } 

一旦你的控制器已經準備好,它可以被稱爲像

yoursite.com/mailer?e=<email>&m=<message>&sub=<subject>