Отображение сообщений об ошибках в Laravel после перенаправления с контроллера

как я могу отобразить сообщение проверки в представлении, которое перенаправляется в 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

Update: и как отобразить сообщения об ошибках рядом с конкретными полями

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.

вы можете обратиться к врачам здесь.


@if ($errors->has('category'))
    <span class="error">{{ $errors->first('category') }}</span>
@endif

Если вы хотите загрузить представление с того же контроллера, на котором вы находитесь:

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

и если вы хотите быстро отобразить все ошибки, но иметь немного больше контроля:

 @if ($errors->any())
     @foreach ($errors->all() as $error)
         <div>{{$error}}</div>
     @endforeach
 @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',
    ],
];

то есть;

enter image description here