2011-09-09 8 views
6

डेटाबेस कनेक्शन विफल होने पर मैं वाईआई त्रुटि संदेश नहीं देखना चाहता हूं। डेटाबेस कनेक्शन Yii ढांचे के साथ विफल होने पर मैं किसी विशिष्ट पृष्ठ पर पुनर्निर्देशित कैसे कर सकता हूं? धन्यवाद।वाईआई में डेटाबेस कनेक्शन विफल होने पर मैं किसी विशिष्ट पृष्ठ पर रीडायरेक्ट कैसे कर सकता हूं?

उत्तर

6

सभी CDbConnection त्रुटियों को पकड़ने के लिए आप config में कोई त्रुटि हैंडलर/main.php

'components'=>array('errorHandler'=>array('errorAction'=>'site/error',),), 

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

public function actionError() { 
    if($error=Yii::app()->errorHandler->error) 
     if (CDbException == $error->type) { 
      $this->redirect(array("site/error_message")); } 
    // call the parent error handler, but something doesn't feel right about this: 
    else 
     parent::actionError(); } 

वैकल्पिक रूप से आप सिर्फ अपने कस्टम दृश्य प्रदान कर सकते हैं:

public function actionError() { 
    if($error=Yii::app()->errorHandler->error) 
     if (CDbException == $error->type) { 
      $this->render('error', $error); } } 

अधिक जानकारी के लिए Yii docs देखें।

+2

सुंदर दृष्टिकोण –

+2

क्यों न केवल इसे सरल बनाएं: अगर ($ त्रुटि = Yii :: ऐप() -> त्रुटि हैंडलर-> त्रुटि && CDbException == $ त्रुटि-> प्रकार) {...} ??? – Fydo

+0

@Fydo: हाँ, यह वही काम करना चाहिए। लेकिन मैं पाइथोनिक PHP पसंद करता हूं;) (स्पष्ट, पठनीय, महत्वपूर्ण इंडेंटेशन, आदि) – hobs

1

आप की तरह कुछ कर सकते हैं:

try { 
    $connection=new CDbConnection($dsn,$username,$password); 
} catch(Exception $e) { 
    $this->redirect(array('controller/action')); 
} 

आप रीडायरेक्ट के साथ अतिरिक्त जानकारी पारित कर सकते हैं, here देखते हैं।

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

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