2015-06-26 9 views
22

कैसे मेरी प्रपत्र कार्रवाई एक अपवाद फेंकता है तो, मैं अपनी फार्म पेज को दी POST पैरामीटर वाला, रीडायरेक्ट कर सकते हैं?कैसे वापस रीडायरेक्ट करने के लिए इनपुट के साथ बनाने के लिए - Laravel 5

+1

आप जानते हैं कि मुझे केवल आपके प्रश्न को ऊपर उठाना पड़ा क्योंकि आपने पूछा था और एक ही समय में इसका उत्तर दिया था। – whoacowboy

+0

सोचा कि यह अन्य लोगों के लिए सहायक होगा।समाधान नहीं मिला, इसलिए मैंने यह देखने के लिए स्रोत के माध्यम से खोला कि यह फ़ॉर्म सत्यापन के साथ स्वचालित रूप से कैसे संभाला जाता है – infomaniac

+0

मैं हमेशा इसकी सराहना करता हूं। – whoacowboy

उत्तर

31

आप निम्न का उपयोग कर सकते हैं:

return Redirect::back()->withInput(Input::all()); 

आप Form Request Validation उपयोग कर रहे हैं, वास्तव में यह कैसे Laravel तुम वापस त्रुटियों और दिए गए इनपुट के साथ रीडायरेक्ट करेगा है।

\Illuminate\Foundation\Validation\ValidatesRequests से

अंश:

return redirect()->to($this->getRedirectUrl()) 
        ->withInput($request->input()) 
        ->withErrors($errors, $this->errorBag()); 
+0

इसके अलावा, आप 'back()' का उपयोग कर सकते हैं। http://laravel.com/docs/5.1/responses#redirects – lesssugar

+1

नहीं, यह आपके इनपुट पैराम्स को बनाए रखता है – infomaniac

+3

निश्चित रूप से, मुझे यह सलाह है: 'वापसी रीडायरेक्ट() -> वापस() -> इनपुट() के साथ; 'यह है बस एक आसान मैक्रो। – lesssugar

22

अपने खेतों पर वर्ष समारोह लिखने उदाहरण

<input type="text" name="username" value="{{ old('username') }}"> 
+0

का जवाब दिया यह एक लार्वेल 5.1 – TodStoychev

+1

धन्यवाद के लिए काम करता है! मैं लैरवेल 5.2 का उपयोग कर रहा हूं और यह मेरे लिए भी काम करता है। हमारे ब्लेड टेम्पलेट में 'पुराने()' फ़ंक्शन के साथ-साथ, हमें इसे काम करने के लिए हमारे नियंत्रक में 'withInput()' का उपयोग करने की भी आवश्यकता है। पसंद => 'अगर ($ मान्य-> विफल रहता है)) रिटर्न रीडायरेक्ट (" कुछ पेज ") -> के साथ ($ मान्य) -> इनपुट के साथ();' –

+2

'चयन के लिए इसे कैसे करें इस पर कोई विचार ' –

2

के लिए मूल्य मैं इस तरह Laravel 5.3 में मान्यता अपवाद संभाल। यदि आप लैरवेल कलेक्टिव का उपयोग करते हैं तो यह स्वचालित रूप से इनपुट के बगल में त्रुटियों को प्रदर्शित करेगा और यदि आप लार्कास्ट/फ्लैश का उपयोग करते हैं तो यह नोटिस के रूप में पहली सत्यापन त्रुटि भी दिखाएगा।


Handler.php प्रस्तुत करना:

public function render($request, Exception $e) 
{ 
    if ($e instanceof \Illuminate\Validation\ValidationException) { 
     return $this->handleValidationException($request, $e); 
    } 

    (..) 
} 

और समारोह:

protected function handleValidationException($request, $e) 
    { 
     $errors = @$e->validator->errors()->toArray(); 
     $message = null; 
     if (count($errors)) { 
      $firstKey = array_keys($errors)[0]; 
      $message = @$e->validator->errors()->get($firstKey)[0]; 
      if (strlen($message) == 0) { 
       $message = "An error has occurred when trying to register"; 
      } 
     } 

     if ($message == null) { 
      $message = "An unknown error has occured"; 
     } 

     \Flash::error($message); 

     return \Illuminate\Support\Facades\Redirect::back()->withErrors($e->validator)->withInput(); 
    } 
1

Laravel 5:

return redirect(...)->withInput(); 
वापस लिए ही

:

return back()->withInput(); 
+1

' वापस लौटें() -> इनपुट(); ' –

+0

अच्छा! मैं' $ अनुरोध-> सभी() 'पास कर रहा था यह विधि लेकिन यह जानना अच्छा है कि इसकी आवश्यकता नहीं है। –

4

अपने HTML में आप value = {{ old('') }} उपयोग करना होगा। इसका उपयोग किए बिना, आप मूल्य वापस नहीं प्राप्त कर सकते हैं क्योंकि उनके कैश में कौन सा सत्र स्टोर होगा।

एक नाम सत्यापन के लिए की तरह, इस

<input type="text" name="name" value="{{ old('name') }}" /> 

है- होगा अब, अगर इसलिए रीडायरेक्ट साथ त्रुटि है तो आप इसे भेजने के बाद मूल्य मिल सकता है।

return redirect()->back()->withInput(); 

कहते हैं @infomaniac, आप भी Input class सीधे उपयोग कर सकते हैं,

return Redirect::back()->withInput(Input::all()); 

जोड़ें: आप केवल विशिष्ट क्षेत्र दिखाने के हैं, तो का उपयोग $request->only()

return redirect()->back()->withInput($request->only('name')); 

आशा है, यह सभी मामलों में काम कर सकता है, धन्यवाद।

+1

धन्यवाद। यह मदद करता है –

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