2011-08-23 1 views
7

私はコントローラファイルを薄く保つことができるようにメールを送信するために作成したカスタムクラスを使用しようとしています。私はカスタムクラスを作成し、それをcomponentsフォルダに入れました。次に、私のメイン設定ファイルのメインコンポーネントの下にカスタムYiiコンポーネントをロードする

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

を追加しました。

これで、クラスに直接アクセスできるようになりますか?

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

と::

Yii:app()->MailerConfirmation(); 

と私はで終わるすべてのエラーですが、私は使用してみてください。

カスタムコンポーネントをどのように含めることができますか?たぶん私はこれをすべて間違っているのですか?

答えて

12

まず、それは次のようになります。

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

お知らせ最後のドットの不在の代わりに「のSendMail」「のSendMail。」。また、この設定では、 "SendMail"という名前のクラスであるprotected/componentsディレクトリにphpファイルSendMail.phpがあり、このコンポーネントがCApplicationComponentを継承していると想定しています。コンポーネントIDは、最初の文字が小さい、たとえばYii::app()->sendMailで、これは "SendMail"クラスのインスタンスを返します。私はMailerConfirmationが何であるか分かりませんが、SendMailオブジェクトのメソッドであれば、それにアクセスする必要がありますYii::app()->sendMail->MailerConfirmation()

これは役に立たない場合は、いくつかのコードを投稿し、エラーを投稿してください。

'import'=>array(
    'application.models.*', 
    'application.components.*', 
), 

あなたがであなたのSendMail.phpクラスを置くことができます:あなたは、configファイル内のすべてのコンポーネントのプロパティを設定したり、他のCApplicationComponent機能を使用するつもりはないし、あなたの設定ファイルは、デフォルトが含まれている場合ということ

2

注意コンポーネントディレクトリとそれが経由して、それを呼び出すことにより、自動ロードされます:

$mailer = new SendMail(); 

その後経由でメソッドを呼び出します。

$mailer->MailerConfirmation(); 

CApplicationComponentを使用する場合は、Yiiのチュートリアルと同様に、hereまたはhereをいくつかの例として見てください。

関連する問題