programing

컨트롤러에서 리다이렉트된 후 Larabel에 오류 메시지 표시

nicescript 2022. 12. 29. 21:54
반응형

컨트롤러에서 리다이렉트된 후 Larabel에 오류 메시지 표시

Laravel에서 리다이렉트되고 있는 뷰에 검증 메시지를 표시하려면 어떻게 해야 합니까?

컨트롤러에서의 내 기능은 다음과 같습니다.

public function registeruser()
{
    $firstname = Input::get('firstname');
    $lastname = Input::get('lastname');
    $data  =  Input::except(array('_token')) ;
    $rule  =  array(
                'firstname'       => 'required',
                'lastname'         => 'required',
                   ) ;
    $validator = Validator::make($data,$rule);
    if ($validator->fails())
    {
    $messages = $validator->messages();
    return Redirect::to('/')->with('message', 'Register Failed');
    }
    else
    {
    DB::insert('insert into user (firstname, lastname) values (?, ?)',
                                array($firstname, $lastname));
    return Redirect::to('/')->with('message', 'Register Success');
    }
    }

아래 주어진 코드가 잘못된 시도인 것은 알지만, 어떻게 수정하고 부족한 점은 무엇입니까?

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

업데이트 : 특정 필드 근처에 오류 메시지를 표시하려면 어떻게 해야 합니다.

라라벨 4

검증에 실패하면 검증 오류와 함께 반환됩니다.

if($validator->fails()) {
    return Redirect::back()->withErrors($validator);
}

다음 명령을 사용하여 뷰에서 오류를 확인할 수 있습니다.

@if($errors->any())
    {{ implode('', $errors->all('<div>:message</div>')) }}
@endif

갱신하다

각 필드 아래에 오류를 표시하려면 다음과 같이 하십시오.

<input type="text" name="firstname">
@if($errors->has('firstname'))
    <div class="error">{{ $errors->first('firstname') }}</div>
@endif

css를 사용하여 디스플레이 스타일을 개선합니다.

문서를 참조해 주세요.

업데이트 2

모든 오류를 한 번에 표시하려면

@if($errors->any())
    {!! implode('', $errors->all('<div>:message</div>')) !!}
@endif

각 필드 아래에 오류를 표시합니다.

@error('firstname')
    <div class="error">{{ $message }}</div>
@enderror

같은 컨트롤러에서 뷰를 로드하려면 다음 절차를 따릅니다.

if ($validator->fails()) {
    return self::index($request)->withErrors($validator->errors());
}

또한 모든 오류를 빠르게 표시하지만 제어 능력을 향상시키려면 다음 절차를 수행합니다.

 @if ($errors->any())
     @foreach ($errors->all() as $error)
         <div>{{$error}}</div>
     @endforeach
 @endif
@if ($errors->has('category'))
    <span class="error">{{ $errors->first('category') }}</span>
@endif

보기 좋게 하려면 작은 부트스트랩 도움말을 사용할 수 있습니다.

@if(count($errors) > 0 )
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
    <ul class="p-0 m-0" style="list-style: none;">
        @foreach($errors->all() as $error)
        <li>{{$error}}</li>
        @endforeach
    </ul>
</div>
@endif

새로운 Laravel 블레이드 오류 지시가 Laravel 5.8.13에 도착합니다.

// Before
@if ($errors->has('email'))
    <span>{{ $errors->first('email') }}</span>
@endif

// After:
@error('email')
    <span>{{ $message }}</span>
@enderror

다음과 같이 html 태그를 사용하여 인쇄할 수 있습니다.

@if($errors->any())
    {!! implode('', $errors->all('<div>:message</div>')) !!}
@endif
$validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required', ]);

if ($validator->fails()) { return $validator->errors(); }
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
{!! Form::text('firstname', null !!}

@if($errors->has('firstname')) 
    {{ $errors->first('firstname') }} 
@endif

이 방법 또한 작업을 수행하는 데 좋은 방법입니다.

@if($errors->any())
  {!! implode('', $errors->all('<div class="alert alert-danger">:message</div>')) !!}
@endif

태그는 요건에 따라 포맷할 수 있습니다.

아래 입력 필드에는 추가 보기가 포함됩니다.

@include('input-errors', ['inputName' => 'inputName']) #For your case it would be 'email'

input-blade.blade 입니다.php

@foreach ($errors->get($inputName) as $message)
    <span class="input-error">{{ $message }}</span>
@endforeach

CSS - 메시지에 빨간색이 추가됩니다.

.input-error {
    color: #ff5555;
}

토스터를 사용하는 경우 다음을 사용하여 부동 메시지 오류를 표시합니다.

@if($errors->any()) 
     <script type="text/javascript">
         toastr.error({{ implode(' ', $errors->all()) }});
    </script> 
@endif

Larabel 8 및 Bootstrap 5도 사용하는 경우 다음과 같은 경고와 함께 오류를 깔끔하게 표시할 수 있습니다.

@if($errors->any())
    <div class="alert alert-danger alert-dismissible">
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        <strong>
            {!! implode('<br/>', $errors->all('<span>:message</span>')) !!}
        </strong>
    </div>
@endif

커널에 있는 모든 것을 이동합니다.php 위의 방법만 통하지 않으면 커널 내의 모든 행을 이동해야 한다는 것을 기억하십시오.php는 위의 솔루션과 더불어

먼저 파일에 있는 그대로 표시해 보겠습니다.

protected $middleware = [

    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

이제 당신이 해야 할 일은

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
     \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [

    ],

    'api' => [
        'throttle:60,1',
    ],
];

즉,

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/26732821/displaying-the-error-messages-in-laravel-after-being-redirected-from-controller

반응형