Как отобразить сообщение проверки в представлении, которое перенаправляется в 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
Когда валидация не вернется с ошибками проверки.
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
Переместите все это в kernel.php, если только выше описанный метод не работает, вы помните, что вам нужно переместить все эти строки в kernel.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', ], ];
то есть;