लारवेल रीडायरेक्ट बैक के साथ () संदेश


158

मैं एक घातक त्रुटि होने पर एक संदेश के साथ पिछले पृष्ठ पर पुनर्निर्देशित करने का प्रयास कर रहा हूं।

App::fatal(function($exception)
{
    return Redirect::back()->with('msg', 'The Message');
}

दृश्य में संदेश को साथ ले जाने की कोशिश कर रहा है

Sessions::get('msg')

लेकिन कुछ भी नहीं हो रहा है, क्या मैं यहाँ कुछ गलत कर रहा हूँ?


1
टाइपो सत्र को ठीक करें s, और useजहाँ आवश्यकता हो उसे जोड़ें । इसके अलावा - काम करना चाहिए।
येवगेनी अफानसेयेव

जवाबों:


234

प्रयत्न

return Redirect::back()->withErrors(['msg', 'The Message']);

और आपके विचार के अंदर इसे कॉल करें

@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif

8
यह काम करता है, कितना अच्छा है। लेकिन यह काम क्यों नहीं किया जाता है return Redirect::back()->with('msg', 'The Message'); कि यहां "संदेश" कैसे प्राप्त करें?
मुदित तुली

क्या आपने यह देखने की कोशिश की है कि क्या संदेश है? Session::has('msg')
जियानिस क्रिस्टोफाकिस

हाँ जाँच की Session::has('msg')और 'संदेश' नहीं है।
मुदित तुली

2
@incnischristofakis ऐसा लगता है कि यह निश्चित है। मुझे नहीं पता कि सितंबर में उस ठंडी धुंधली सुबह मैं क्या धूम्रपान कर रहा था।
स्टैकऑवरफ्लो

7
5.4 के लिए , withErrors('some error')- इसलिए सरणी के बजाय एक स्ट्रिंग होना चाहिए।
सेंटी

127

लारवेल 5 और बाद में

नियंत्रक

 return redirect()->back()->with('success', 'your message,here');   

ब्लेड:

@if (\Session::has('success'))
    <div class="alert alert-success">
        <ul>
            <li>{!! \Session::get('success') !!}</li>
        </ul>
    </div>
@endif

7
स्ट्रिंग रूपांतरण करने के लिए सरणी :(
येवगेनी अफानसेयेव

टिप्पणी को संपादित के रूप में छोड़ दिया गया है: यदि यह त्रुटि देता है: स्ट्रिंग रूपांतरण करने के लिए, तो नियंत्रक में बस छोटा सा फिक्सreturn redirect()->back()->with('success', 'your message here');
माइकल

@ मिचेल आप क्या मतलब है अगर? यह निश्चित रूप से एक सरणी देता है!
एंड्रयू सेव्टचुक

@AndrewSavetchuk - यह मेरी टिप्पणी नहीं है। एक अन्य SO उपयोगकर्ता ने उत्तर को तब संपादित किया था जब उसे सिर्फ एक टिप्पणी छोड़नी चाहिए थी या अपना उत्तर बनाया था।
माइकल

@ माइकल को हमें सही तरीके से जवाब को संपादित करना चाहिए क्योंकि यदि आप उस कोड को चलाते हैं तो यह काम नहीं करेगा।
एंड्रयू सेव्टचुक

62

वैकल्पिक दृष्टिकोण होगा

नियंत्रक

use Session;
       
Session::flash('message', "Special message goes here");
return Redirect::back();

राय

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif

22

Laravel 5.4 में निम्नलिखित ने मेरे लिए काम किया:

return back()->withErrors(['field_name' => ['Your custom message here.']]);

नमस्ते। स्वीकृत उत्तर Laravel 4 (प्रश्न टैग देखें) में withErrors()उपयोग के लिए है, उत्तर में विधि के लिए पैरामीटर अन्य तत्वों के साथ एक सरणी है ['msg', 'The Message']:। स्वीकार्य मापदंडों के लिए एपीआई देखें: laravel.com/api/4.2/Illuminate/Http/…
haakym

मेरे जवाब में, लारवेल 5.4 में उपयोग के लिए, withErrors()विधि के लिए मापदंड एक तत्व के साथ एक सरणी है जो एक key => valueजोड़ी है, जहां मूल्य एक सरणी है। 5.4 एपीआई: laravel.com/api/5.4/Illuminate/Http/…
हकीम

13

आपके पास एक त्रुटि है (गलत वर्तनी):

Sessions::get('msg')// an extra 's' on end

होना चाहिए:

Session::get('msg')

मुझे लगता है, अब यह काम करना चाहिए, यह मेरे लिए है।


8

बस फ़्लैश संदेश सेट करें और अपने नियंत्रक फंक्शनल से वापस रीडायरेक्ट करें।

    session()->flash('msg', 'Successfully done the operation.');
    return redirect()->back();

और फिर आप व्यू ब्लेड फ़ाइल में संदेश प्राप्त कर सकते हैं।

   {!! Session::has('msg') ? Session::get("msg") : '' !!}

मुझे लगता है कि {!! Session::get("msg", '') !!}पर्याप्त होना चाहिए। get()पहले से ही जांचता है कि कुंजी मौजूद है या नहीं तो डिफ़ॉल्ट मान लौटाता है।
एमिल बर्जरॉन

8

लारवेल में 5.5 :

return back()->withErrors($arrayWithErrors);

ब्लेड का उपयोग करते हुए देखने में:

@if($errors->has())
    <ul>
    @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif

2
$ त्रुटियां-> () विफल रही हैं, लेकिन $ त्रुटियां-> कोई भी () अच्छी तरह से काम करती हैं
robspin

6

लार्वा 5.8 में आप निम्न कार्य कर सकते हैं:

return redirect()->back()->withErrors(['name' => 'The name is required']);

और ब्लेड में:

@error('name')
<p>{{ $message }}</p>
@enderror

4

मैंने खुद को लारवल के लिए लारैकस्टेस पैकेज के पक्ष में लिखना बंद कर दिया, जो आपके लिए यह सब संभालता है। यह उपयोग करना वास्तव में आसान है और आपके कोड को साफ रखता है। यहां तक ​​कि एक लार्कास्ट भी है जो इसे उपयोग करने के तरीके को कवर करता है। आपको केवल यह करना है:

संगीतकार के माध्यम से पैकेज में खींचो।

"require": {
  "laracasts/flash": "~1.0"
}

एप्लिकेशन / कॉन्‍फ़िगर / app.php के भीतर सेवा प्रदाता शामिल करें।

'providers' => [
  'Laracasts\Flash\FlashServiceProvider'
];

तल पर इसी फ़ाइल में एक मुखौटा उपनाम जोड़ें:

'aliases' => [
  'Flash' => 'Laracasts\Flash\Flash'
];

HTML को दृश्य में खींचें:

@include('flash::message') 

संदेश के दाईं ओर एक करीब बटन है। यह jQuery पर निर्भर करता है इसलिए सुनिश्चित करें कि आपके बूटस्ट्रैप से पहले जोड़ा गया है।

वैकल्पिक परिवर्तन:

यदि आप बूटस्ट्रैप का उपयोग नहीं कर रहे हैं या फ़्लैश संदेश का समावेश छोड़ना चाहते हैं और कोड स्वयं लिखें:

@if (Session::has('flash_notification.message'))
  <div class="{{ Session::get('flash_notification.level') }}">
    {{ Session::get('flash_notification.message') }}
  </div>
@endif

यदि आप HTML को अंदर खींच कर देखना चाहते हैं @include('flash::message'), तो आप इसे पा सकते हैं vendor/laracasts/flash/src/views/message.blade.php

यदि आप को संशोधित करने की जरूरत है तो

php artisan view:publish laracasts/flash

दो पैकेज दृश्य अब `ऐप / विचार / पैकेज / लार्कास्ट्स / फ्लैश / 'निर्देशिका में स्थित होंगे।


4

नियंत्रक में

उदाहरण के लिए

return redirect('login')->with('message',$message);

ब्लेड फ़ाइल में संदेश सत्र में नहीं चर में संग्रहीत करेगा।

उदाहरण के लिए

@if(session('message'))
{{ session('message') }}
@endif

3

लारवेल 5.5+ के लिए

नियंत्रक:

return redirect()->back()->with('success', 'your message here');

ब्लेड:

@if (Session::has('success'))
    <div class="alert alert-success">
        <ul>
            <li>{{ Session::get('success') }}</li>
        </ul>
    </div>
@endif

2

मैंने उसी समस्या का सामना किया और यह काम किया।

नियंत्रक

return Redirect::back()->withInput()->withErrors(array('user_name' => $message));

राय

<div>{{{ $errors->first('user_name') }}}</div>

2

लारवेल 5.6 के लिए। *

लारवेल 5.6 में दिए गए कुछ जवाबों की कोशिश करते हुए। *, यह स्पष्ट है कि कुछ सुधार हुए हैं जो मैं यहां पोस्ट करने जा रहा हूं ताकि उन चीजों को आसान बनाया जा सके जो बाकी उत्तरों के साथ हल नहीं ढूंढ सके।

चरण 1:

अपनी नियंत्रक फ़ाइल पर जाएं और इसे कक्षा से पहले जोड़ें:

use Illuminate\Support\Facades\Redirect;

चरण 2: इसे जोड़ें जहां आप पुनर्निर्देशन वापस करना चाहते हैं।

 return Redirect()->back()->with(['message' => 'The Message']);

चरण 3: अपनी ब्लेड फ़ाइल पर जाएं और निम्नानुसार संपादित करें

@if (Session::has('message'))
<div class="alert alert-error>{{Session::get('message')}}</div>
 @endif

फिर परीक्षण करें और बाद में मुझे धन्यवाद दें।

यह लार्वा 5.6 के साथ काम करना चाहिए। * और संभवतः 5.7। *


1

लारवेल के लिए ३

सिर्फ @incnis क्रिस्टोफ़किस जवाब पर एक सिर; लारावेल 3 का उपयोग करने वाले किसी के लिए भी

return Redirect::back()->withErrors(['msg', 'The Message']);

साथ में:

return Redirect::back()->with_errors(['msg', 'The Message']);

1

लारवेल 5.6। *

नियंत्रक

if(true) {
   $msg = [
        'message' => 'Some Message!',
       ];

   return redirect()->route('home')->with($msg);
} else {
  $msg = [
       'error' => 'Some error!',
  ];
  return redirect()->route('welcome')->with($msg);
}

ब्लेड टेम्पलेट

  @if (Session::has('message'))
       <div class="alert alert-success" role="alert">
           {{Session::get('message')}}
       </div>
  @elseif (Session::has('error'))
       <div class="alert alert-warning" role="alert">
           {{Session::get('error')}}
       </div>
  @endif

Enyoj


0

मुझे यह संदेश तब मिला जब मैंने इसे पुनः निर्देशित करने का प्रयास किया:

public function validateLogin(LoginRequest $request){
    //

    return redirect()->route('sesion.iniciar')
            ->withErrors($request)
            ->withInput();

जब सही तरीका है:

public function validateLogin(LoginRequest $request){
    //

    return redirect()->route('sesion.iniciar')
            ->withErrors($request->messages())
            ->withInput();

0

लारवेल 5.8

नियंत्रक

return back()->with('error', 'Incorrect username or password.');

ब्लेड

  @if (Session::has('error'))
       <div class="alert alert-warning" role="alert">
           {{Session::get('error')}}
       </div>
  @endif
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.