2011-08-23 19 views
7

लोड हो रहा है मैं मेल भेजने के लिए बनाए गए कस्टम क्लास का उपयोग करने की कोशिश कर रहा हूं ताकि मैं नियंत्रक फ़ाइलों को पतला रख सकूं। मैंने अपनी कस्टम क्लास बनाई और इसे घटक फ़ोल्डर में डाल दिया। मैंने तब जोड़ा:एक कस्टम वाईआई घटक

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

मेरी मुख्य कॉन्फ़िगरेशन फ़ाइल में मुख्य घटक के नीचे।

इससे मुझे कक्षा तक सीधे पहुंचने की अनुमति देनी चाहिए?

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

और:: मैं का उपयोग कर प्रयास

Yii:app()->MailerConfirmation(); 

और सभी के साथ मैं अंत त्रुटियों है।

क्या कोई मुझे बता सकता है कि मैं एक कस्टम घटक कैसे शामिल करता हूं? शायद मैं यह सब गलत कर रहा हूँ?

उत्तर

12

पहले यह होना चाहिए: "। SendMail"

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

सूचना अंत के बजाय "SendMail" में बिंदु के अभाव। साथ ही, यह कॉन्फ़िगरेशन अपेक्षा करता है कि आपके पास php फ़ाइल SendMail.php है, संरक्षित/घटक निर्देशिका में जो "SendMail" नाम वाला वर्ग है और यह घटक CApplicationComponent को बढ़ाता है। घटक आईडी कम पहले अक्षर के साथ होगा, उदाहरण के लिए Yii::app()->sendMail और यह "SendMail" कक्षा का उदाहरण वापस कर देगा। मुझे नहीं पता कि MailerConfirmation क्या है, लेकिन यदि यह SendMail ऑब्जेक्ट का एक तरीका है, तो आपको इसे Yii::app()->sendMail->MailerConfirmation()

यदि यह मदद नहीं करता है, तो कृपया कुछ कोड पोस्ट करें और आपको मिलने वाली त्रुटियों को पोस्ट करें।

2

ध्यान दें कि अगर आप कॉन्फ़िग फ़ाइल में किसी भी घटक गुण सेट या अन्य CApplicationComponent सुविधाओं और अपने कॉन्फ़िग फ़ाइल का उपयोग करने नहीं जा रहे हैं डिफ़ॉल्ट में शामिल हैं:

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

आप में अपने sendmail.php वर्ग डाल सकते हैं घटकों निर्देशिका और के माध्यम से यह फोन करके कहीं भी होगी autoload:

$mailer->MailerConfirmation(); 
:

$mailer = new SendMail(); 

तो के माध्यम से अपने तरीके फोन

यदि आप CApplicationComponent का उपयोग करना चाहते हैं, तो आप कुछ उदाहरणों के साथ-साथ वाईआई ट्यूटोरियल्स के लिए here या here देखना चाह सकते हैं।

संबंधित मुद्दे