2013-07-29 8 views
8

मेरे पास एक नियंत्रक है जिसमें एक विधि है। कोड विधि में बहुत लंबा है, इसलिए मैंने कुछ कोडों को अन्य निजी तरीकों से रखा है, ताकि विधियां समझ में आ सकें और इससे कोई गड़बड़ न हो।निजी विधि से लार्वा पुनर्निर्देशन

अब, जब मैं पैरामीटर के आधार पर यूआरएल से सार्वजनिक विधि तक पहुंचता हूं, तो यह नौकरी को संसाधित करने के लिए एक विशिष्ट निजी विधि को कॉल करेगा। नौकरी संसाधित होने के बाद, मैं एक यूआरएल पर रीडायरेक्ट करना चाहता हूं, लेकिन पुनर्निर्देशन काम नहीं कर रहा है।

class SomeClass extends BaseController{ 
    public function getMethodName() 
     { 
      //check the params and choose a private method to call 
      $this->processJob(); 
     } 
    private function processJob() 
    { 
     //process the job and redirect at the end 
     return Redirect::to('some/url'); 
    } 
} 

समस्या है, इसके बाद के संस्करण रीडायरेक्ट काम नहीं करता:

मेरे कोड का एक नमूना इस प्रकार है। ऐसा क्यों है? कोडनिर्देशक में, जब आपने redirect का उपयोग किया था, तो यह नामांकन करता है जहां से इसे कहा जाता है।

यदि उपर्युक्त कोड नमूना ऐसा करने का सही तरीका नहीं है, तो कोई सराहना करेगा कि कोई मुझे दिखा सकता है कि यह कैसे किया जाना है। धन्यवाद।

+0

यह काम करना चाहिए - मैं हर समय उस प्रकार के कोड का उपयोग करता हूं। क्या आपको कोई त्रुटि मिल रही है? यदि आप रीडायरेक्ट को प्रक्रिया जॉब() की शुरुआत में ले जाते हैं तो क्या होता है? – Laurence

+0

यह काम नहीं करता है। मैंने प्रक्रिया में सभी अन्य कोड हटा दिए हैं जोब(), केवल उस रीडायरेक्ट लाइन को रखते हुए, अभी भी काम नहीं करता है। वैसे, एल 4 का उपयोग कर रहा हूँ। – WebNovice

+0

क्या आप निश्चित हैं कि प्रक्रिया जॉब कहा जा रहा है? प्रक्रिया में डीडी ('हाय') आज़माएं - क्या आप 'हाय' देखते हैं ?? – Laurence

उत्तर

14

आपको $this->processJob() से भी वापसी वापस करनी है।

class SomeClass extends BaseController{ 
    public function getMethodName() 
    { 
     //check the params and choose a private method to call 
     return $this->processJob(); 
    } 

    private function processJob() 
    { 
    //process the job and redirect at the end 
    return Redirect::to('some/url'); 
    } 
} 
+0

धन्यवाद, अब यह एक काम करता है। कोडिग्निटर से आ रहा है, हालांकि यह अजीब लग रहा है। – WebNovice

+1

इसे इस तरह देखें: लार्वेल आपके नियंत्रक फ़ंक्शन को कॉल करता है और बदले में कुछ की अपेक्षा करता है, इसलिए यह जानता है कि आगे क्या करना है। आपके कोड में, 'रिटर्न रीडायरेक्ट :: से (' कुछ/यूआरएल ');' जहां भी आपका निजी फ़ंक्शन कहा जाता है, वहां वापस लौटाया जाता है, लेकिन यह लार्वेल तक नहीं पहुंचता है। हाँ, थोड़ा बेवकूफ लगता है, लेकिन यह मूल रूप से क्या होता है। – mgrueter

2

अपने निजी फ़ंक्शन परिणाम के अनुसार, आप अपने सार्वजनिक फ़ंक्शन से दूसरे पृष्ठ पर रीडायरेक्ट करने का प्रयास कर सकते हैं (मुझे लगता है कि यह आपके कोड को अधिक मानव पठनीय बनाने का बेहतर समाधान है)। लेकिन यह आपके द्वारा लिखा गया काम कर सकता है ...

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