2011-08-23 23 views
7

Próbuję użyć niestandardowej klasy, którą utworzyłem, aby wysłać pocztę, dzięki czemu będę mógł przechowywać cienki plik kontrolera. Stworzyłem swoją klasę niestandardową i umieściłem ją w folderze komponentów. Następnie dodałem:Ładowanie niestandardowego komponentu Yii

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

pod głównymi komponentami w głównym pliku konfiguracyjnym.

To powinno pozwolić mi uzyskać bezpośredni dostęp do klasy? Staram się przy użyciu:

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

i:

Yii:app()->MailerConfirmation(); 

i wszystko, co skończyło się to błędy.

Czy ktoś może mi powiedzieć, w jaki sposób dodać komponent niestandardowy? Może robię to wszystko źle?

Odpowiedz

12

pierwsze powinien być „SendMail”

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

zauważyć braku kropką koniec „SendMail” zamiast. Ponadto ta konfiguracja oczekuje, że masz plik php SendMail.php, w katalogu protected/components, który jest klasą o nazwie "SendMail" i że ten komponent rozszerza CApplicationComponent. Identyfikator komponentu będzie miał niższą pierwszą literę, np. Yii::app()->sendMail, co spowoduje zwrócenie instancji klasy "SendMail". Nie wiem, co to jest MailerConfirmation, ale jeśli jest to metoda obiektu SendMail, to powinieneś uzyskać do niego dostęp, na przykład: Yii::app()->sendMail->MailerConfirmation()

Jeśli to nie pomoże, proszę opublikuj kod i opublikuj błędy, które otrzymujesz.

2

Należy pamiętać, że jeśli nie idą do ustawiania właściwości komponentu w pliku konfiguracyjnym lub korzystać z innych funkcji CApplicationComponent i plik konfiguracyjny zawiera domyślnie:

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

można umieścić w klasie sendmail.php katalog elementy i będzie autoload nazywając go poprzez:

$mailer = new SendMail(); 

następnie połączyć się za pomocą metod:

$mailer->MailerConfirmation(); 

jeśli chcesz użyć CApplicationComponent, możesz zajrzeć here lub here dla kilku przykładów, a także samouczki Yii.

Powiązane problemy