Laravel Redirect Back with () 메시지


158

치명적인 오류가 발생하면 메시지와 함께 이전 페이지로 리디렉션하려고합니다.

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

뷰에서 msg에 액세스하려고합니다.

Sessions::get('msg')

그러나 아무것도 렌더링되지 않습니다. 여기서 뭔가 잘못하고 있습니까?


1
오타 세션을 수정 s하고 use필요한 곳에 추가하십시오 . 그것과 별도로-작동해야합니다.
Yevgeniy Afanasyev 2016 년

답변:


234

시험

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

그리고 당신의 견해 안에서 이것을 부르십시오.

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

8
이것은 작동합니다. 그러나 왜 return Redirect::back()->with('msg', 'The Message'); "msg"를 얻는 방법 이 작동하지 않습니까?
Mudit Tuli

메시지가 있는지 보려고 했습니까? Session::has('msg')
giannis christofakis

예가 확인 Session::has('msg')되었고 'msg'가 없습니다.
Mudit Tuli

2
@giannischristofakis 확실해 보인다. 나는 9 월에 그 추운 안개가 자욱한 아침을 무엇으로 피웠는지 전혀 모른다.
StackOverflowed

7
5.4의 경우 withErrors('some error')-배열 대신 문자열이어야합니다.
senty

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
:( 문자열 변환에 배열
예브게니 Afanasyev

편집으로 남은 주석 : 오류 : 배열을 문자열로 변환하면 컨트롤러의 작은 수정 사항return redirect()->back()->with('success', 'your message here');
Michael

@Michael 그렇다면 무엇을 의미합니까? 확실히 배열을 반환합니다!
앤드류 Savetchuk

@AndrewSavetchuk-내 의견이 아닙니다. 다른 SO 사용자는 여기에 의견을 남기거나 자신의 답변을 만들어야 할 때 답변을 편집했습니다.
Michael

@Michael 우리는 올바른 방법으로 답변을 편집해야합니다. 그 코드를 실행하면 작동하지 않기 때문입니다.
Andrew Savetchuk 19

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']. 허용되는 매개 변수는 api를 참조하십시오. laravel.com/api/4.2/Illuminate/Http/…
haakym

내 대답에 따르면, Laravel 5.4에서 사용하기 위해 withErrors()메소드 의 매개 변수 는 한 key => value쌍의 요소 가있는 배열이며 값은 배열입니다. 5.4 API : laravel.com/api/5.4/Illuminate/Http/…
haakym

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()이미 가 있는지 확인하고 그렇지 않으면 기본값을 반환합니다.
Emile Bergeron

8

라 라벨 5.5에서 :

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

블레이드를 사용한보기에서 :

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

2
$ errors-> has ()는 실패했지만 $
errors-

6

laravel 5.8에서는 다음을 수행 할 수 있습니다.

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

블레이드에서 :

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

4

나는 당신을 위해 그것을 처리 하는 Laracasts 패키지 에 찬성하여 laravel을 위해 이것을 직접 작성하지 않았습니다 . 사용하기 쉽고 코드를 깨끗하게 유지합니다. 사용 방법을 다루는 라라 캐스트 도 있습니다. 당신이해야 할 모든 것 :

Composer를 통해 패키지를 당기십시오.

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

app / config / 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

두 개의 패키지 뷰는 이제`app / views / packages / 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. *

Laravel 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

그런 다음 테스트하고 나중에 감사합니다.

이것은 laravel 5.6. * 및 가능하면 5.7. *에서 작동합니다.


1

라 라벨 3

@giannis christofakis의 대답에 머리를 댄다. Laravel 3 Replace를 사용하는 모든 사람

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

엔요이


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.