Загрузка пользовательского компонента Yii - PullRequest
7 голосов
/ 23 августа 2011

Я пытаюсь использовать пользовательский класс, который я создал, для отправки почты, чтобы я мог сохранять файлы контроллера тонкими.Я создал свой собственный класс и поместил его в папку компонентов.Затем я добавил:

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

под основными компонентами в моем основном файле конфигурации.

Это должно позволить мне получить прямой доступ к классу?Я пытаюсь использовать:

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

и:

Yii:app()->MailerConfirmation();

, и все, что я заканчиваю, это ошибки.

Может кто-нибудь сказать мне, как я включаю пользовательский компонент?Может я все делаю неправильно?

Ответы [ 2 ]

12 голосов
/ 23 августа 2011

Сначала должно быть:

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

Обратите внимание на отсутствие точки в конце «SendMail» вместо «SendMail». Кроме того, эта конфигурация предполагает, что у вас есть php-файл SendMail.php в защищенном каталоге / components, который является классом с именем «SendMail», и что этот компонент расширяет CApplicationComponent. Идентификатор компонента будет с первой маленькой буквой, например, Yii::app()->sendMail, и это будет возвращать экземпляр класса «SendMail». Я не знаю, что такое MailerConfirmation, но если это метод объекта SendMail, то вы должны получить к нему доступ как Yii::app()->sendMail->MailerConfirmation()

Если это не помогло, пожалуйста, напишите код и опубликуйте ошибки, которые вы получаете.

2 голосов
/ 23 августа 2011

Обратите внимание, что если вы не собираетесь устанавливать какие-либо свойства компонента в файле конфигурации или использовать другие функции CApplicationComponent, и ваш файл конфигурации содержит значение по умолчанию:

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

Вы можете поместить свой класс SendMail.php в каталог компонентов, и он будет автоматически загружаться, вызывая его через:

$mailer = new SendMail();

, затем вызовите ваши методы через:

$mailer->MailerConfirmation();

если вы хотите использовать CApplicationComponent , вы можете посмотреть здесь или здесь для нескольких примеров, а также учебников по Yii.

...