2012-05-14 7 views
10

प्रपत्र को सत्यापित करने में, मैं इस तरह के कोड को खोजनेवाईआई :: ऐप() -> एंड() विधि का उपयोग कैसे करें और यह बाहर निकलने से अलग कैसे है()?

if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 

मैनुअल का कहना है कि अंत() विधि आवेदन समाप्त कर देगा। ऐप को समाप्त क्यों करें? निम्नलिखित कोड निष्पादित नहीं होंगे?

+0

यदि यह मदद की, मैं एक ऊपर वोट की सराहना करेंगे। धन्यवाद! – acorncom

+0

हम्म, इसे एक स्वीकार्य उत्तर दें। यह आपकी प्रतिष्ठा और मेरा मदद करता है। धन्यवाद! – acorncom

उत्तर

17

हां, यह एक अजाक्स अनुरोध है और कोड सत्यापन परिणामों को वापस करने और फिर कोड निष्पादन को रोकना है। यह वही विचार है जैसे पीएचपी मर जाता है, लेकिन वाईआई को एप्प्लिकेशंस एंड क्लीनअप कोड (यदि कोई हो) पर चलने की इजाजत देता है

+0

आपके उत्तर के लिए धन्यवाद! – Chris

+0

और कार्रवाई समाप्त होने पर और क्या कोड चलाया जाएगा? आवेदन वैसे भी मर जाता है। या? – Racky

+0

@racky मेरा जवाब देखें। ऐप के लिए व्यवहार करना संभव है जो अन्य चीजें करते हैं, जैसे कि लॉगिंग, डेटाबेस क्लीनअप इत्यादि – acorncom

2

बस कह रहा है, यह सिर्फ एप्लिकेशन को समाप्त करता है। यह php के exit() से अलग बनाता है कि यह बाहर निकलने से पहले onEndRequest() पर कॉल करता है।

हालांकि, प्रलेखन कहता है कि status पैरामीटर 0 का मतलब सामान्य निकास है जबकि अन्य मूल्यों का असामान्य निकास है, इसका अभ्यास नहीं किया जाता है। status पैरामीटर को exit() फ़ंक्शन पर भेज दिया गया है (जो इसे निश्चित रूप से आउटपुट करता है!)।

Yii::app()->end(json_encode($data), true); 

नोट::

Yii::app()->end('saved', true); 

यहां तक ​​कि वस्तुओं के रूप में नीचे उत्पादन किया जा सकता है (1) onEndRequest() उठाया सही होने के बाद आवेदन अनुरोध को संसाधित करता है। लॉग और अन्य उपयोगी कार्यों को संकेत देने के लिए इस फ़ंक्शन का उपयोग किया जा सकता है।

Yii Documentation of end()

/** 
* Terminates the application. 
* This method replaces PHP's exit() function by calling 
* {@link onEndRequest} before exiting. 
* @param integer $status exit status (value 0 means normal exit while other values mean abnormal exit). 
* @param boolean $exit whether to exit the current request. This parameter has been available since version 1.1.5. 
* It defaults to true, meaning the PHP's exit() function will be called at the end of this method. 
*/ 

public function end($status=0,$exit=true) 
{ 
if($this->hasEventHandler('onEndRequest')) 
$this->onEndRequest(new CEvent($this)); 
if($exit) 
exit($status); 
} 
संबंधित मुद्दे