2011-08-23 35 views
7

Tôi đang cố gắng sử dụng lớp tùy chỉnh mà tôi đã tạo để gửi thư để tôi có thể giữ cho tệp bộ điều khiển mỏng. Tôi đã tạo lớp tùy chỉnh của mình và đặt nó vào thư mục thành phần. Sau đó tôi đã thêm:Tải cấu phần Yii tùy chỉnh

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

bên dưới các thành phần chính trong tệp cấu hình chính của tôi.

Điều này sẽ cho phép tôi truy cập trực tiếp vào lớp học? Tôi cố gắng sử dụng:

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

và:

Yii:app()->MailerConfirmation(); 

và tất cả tôi kết thúc với là lỗi.

Bất kỳ ai có thể cho tôi biết cách tôi bao gồm thành phần tùy chỉnh không? Có lẽ tôi đang làm điều này tất cả sai?

Trả lời

12

Đầu tiên nó nên là: "SendMail"

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

Thông báo sự vắng mặt của dấu chấm cuối cùng "SendMail" thay vì. Ngoài ra, cấu hình này hy vọng rằng bạn có tệp php SendMail.php, trong thư mục protected/components là một lớp có tên "SendMail" và thành phần này mở rộng CApplicationComponent. Id thành phần sẽ có chữ cái đầu tiên thấp hơn, ví dụ: Yii::app()->sendMail và điều này sẽ trả lại phiên bản của lớp "SendMail". Tôi không biết MailerConfirmation là gì, nhưng nếu đây là phương thức của đối tượng SendMail, thì bạn nên truy cập nó như Yii::app()->sendMail->MailerConfirmation()

Nếu điều này không hiệu quả, hãy đăng một số mã và đăng lỗi bạn đang nhận.

2

Lưu ý rằng nếu bạn sẽ không đặt bất kỳ thuộc tính thành phần trong tập tin cấu hình hoặc sử dụng tính năng CApplicationComponent khác và tập tin cấu hình của bạn bao gồm mặc định:

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

Bạn có thể đặt lớp SendMail.php của bạn trong thành phần thư mục và nó sẽ tự động load bằng cách gọi nó qua:

$mailer = new SendMail(); 

sau đó gọi phương pháp của bạn thông qua:

$mailer->MailerConfirmation(); 

nếu bạn muốn sử dụng CApplicationComponent, bạn có thể muốn xem here hoặc here cho một vài ví dụ, cũng như hướng dẫn về Yii.

Các vấn đề liên quan