php - एक नियंत्रक विधि से एक मार्ग के लिए कैसे पुनर्निर्देशित करें




laravel laravel-5 (3)

मैंने अपने नियंत्रक में एक विधि परिभाषित की है, जहां निविष्टियां पहले पुनः प्राप्त की गई हैं, और यदि मेरे डेटाबेस में ईमेल फ़ील्ड मौजूद है, तो मैं एक दृश्य वापस करना चाहता हूं। हालांकि, अगर ईमेल फ़ील्ड मौजूद नहीं है, तो मैं किसी अन्य मार्ग पर पुनर्निर्देशित करना चाहता हूं। मैं भी उस रास्ते के लिए इनपुट में पास करना चाहूंगा।

बेहतर समझने के लिए कि मेरा क्या मतलब है, मेरा कोड मेरे नियंत्रक के लिए निम्नानुसार है:

    public function index(Request $request) {

    $credentials = $request->all();

    if (\App\User::where('email','=',$credentials['email'])->exists()){

        //if they are registered, return VIEW called welcome, with inputs

        return view('welcome', $credentials);

    }
    else{//If the user is not in the database, redirect to '/profile' route,
         //but also send their data

        return redirect('profile', $credentials);

    }

और मेरे web.php इस प्रकार है:

Route::post('/profile', function() {
     $m = Request::only('email'); //I only need the email
     return view('profile', $m);
});

हालांकि, यह तर्क त्रुटियों के साथ विफल रहता है: 'HTTP स्थिति कोड' 1 'परिभाषित नहीं है' वैसे भी यह ठीक से करने के लिए है? (यानी मेरे नियंत्रक विधि से दूसरे मार्ग पर जाना है?)


आप redirect() विधि का उपयोग कर सकते हैं

return redirect()->route('route.name')->with(['email'=> '[email protected]']);

redirect() with() साथ प्रयोग करने से, सत्र में 'ईमेल' जोड़ देगा (अनुरोध नहीं) । इसके साथ ईमेल प्राप्त करें:

request()->session()->get('email')
//Or
session('email')

कृपया अपना व्यू पथ बदलें जैसे:

return view('welcome', compact(credentials));

return redirect()->route('profile')->with('credentials',$credentials);

जिस मार्ग को आप redirect() करना चाहते हैं उसे परिभाषित करने की आवश्यकता होगी redirect()

return redirect()->route('profile')->with('credentials', $credentials);

विकल्प के with सत्र को फ्लैश किया जाता है, जिसे एक्सेस के रूप में पहुंचाया जा सकता है जैसे कि सीधे दृश्य को पास किया गया हो

session और फ्लैशिंग डेटा के बारे में और जानकारी यहां पायी जा सकती है

एक रीडायरेक्ट के बाद फ्लैशिंग डेटा के बारे में जानकारी यहां पाई जा सकती है

आपके मामले में आप इसका इस्तेमाल कर सकते हैं:

return redirect()->route('profile')->with('email', $credentials['email']);

आपके विचार में आप इसे इस्तेमाल कर सकते हैं:

@if(session()->has('email')
    We have the email of the user: {{ session('email') }}
@endif






laravel-5.4