2011-07-25 15 views
0

私のサーバの自動郵送物に使用されている生のPHP(設定ファイルを含む)を使っていくつかのファイルがあります。Yiiで外部PHPファイルをインポートする

このファイルの中で、いくつかの定数(define(...))とユーザー、ホストなどのデータベース接続情報で配列が定義されているとします。

ウェブサイトはYiiを使用しているため、設定ファイルも使用しています。

これらの生ファイルは、どこでも(保護された、外側、同じレベルのindex.phpなど)配置できます。

今、私はYiiの外で別の設定ファイル(そしてデータベースのパスワードなど)を持っていますが、Yiiの中のいくつかの場所で使用する必要があります。

これらのファイルをコントローラにインポートする明確な方法はありますか?私はそれをエクステンションの中に置いていますが、そこから未処理の関数が機能しませんでした。

+0

のように呼び出すことができます。あなたの問題を示す最も簡単な具体例を投稿してください。 – Jon

+0

さて、あまり言わないが、私はそれを第2段落 – 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> 
関連する問題