php - Error de validación de Laravel 5.2 que no aparece en la cuchilla
validation laravel-5.2 (3)
Quiero mostrar un error de validación en la página Ver mientras el usuario da una entrada incorrecta. Está bien que no esté guardando nada en la base de datos mientras un usuario da una entrada incorrecta. Pero no hay ningún mensaje de error en la página de vista del usuario. Si alguien encuentra el error, ayúdame.
Aquí está el controlador:
public function saveUser(Request $request){
$this->validate($request,[
''name'' => ''required|max:120'',
''email'' => ''required|email|unique:users'',
''phone'' => ''required|min:11|numeric'',
''course_id''=>''required''
]);
$user = new User();
$user->name= $request->Input([''name'']);
$user->email= $request->Input([''email'']);
$user->phone= $request->Input([''phone'']);
$user->date = date(''Y-m-d'');
$user->completed_status = ''0'';
$user->course_id=$request->Input([''course_id'']);
$user->save();
return redirect(''success'');
}
Aquí está la ruta:
Route::group([''middleware'' => ''web''], function () {
Route::get(''/'', function () {
return view(''index'');
})->name(''main'');
Route::post(''/saveUser'',[
''uses'' => ''AppController@saveUser'',
''as''=>''saveUser'',
]);
});
Aquí está la página de vista de la cuchilla:
@extends(''layouts.master'')
@section(''title'')
Create User
@endsection
@section(''content'')
@include(''partials.message-block'')
<div class="container" >
<h3> Student Register </h3>
{!! Form::open(array(''route'' => ''saveUser'',''class''=>''form-horizontal'',''method''=>''POST'')) !!}
{!! Form::token(); !!}
{!! csrf_field() ; !!}
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" required placeholder="Name">
</div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" required placeholder="email">
</div>
<div class="form-group">
<label>Phone Number</label>
<input type="text" name="phone" class="form-control" required placeholder="phone">
</div>
<div class="form-group">
<label for="">Class</label>
<select class="form-control input-sm" name="course_id" >
@foreach($input as $row)
<option value="{{$row->id}}">{{$row->name}}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-default">Submit</button>
{!! Form::close() !!}
</div>
@endsection
Y aquí está el bloque de mensaje de error:
@if(count($errors) > 0)
<div class="row">
<div class="col-md-4 col-md-offset-4 error">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
</div>
@endif
@if(Session::has(''message''))
<div class="row">
<div class="col-md-4 col-md--offset-4 success">
{{Session::get(''message'')}}
</div>
</div>
@endif
Alexey está en lo correcto y si no se siente cómodo con eso, puede agregar este código a su vista para que se muestren los mensajes de la sesión.
@if(Session::has(''message''))
<div class="alert alert-success">{{Session::get(''message'')}}</div>
@endif
@if(count($errors)>0)
<ul>
@foreach($errors->all() as $error)
<li class="alert alert-danger">{{$error}}</li>
@endforeach
</ul>
@endif
He hecho esto en laravel 5.5. Confirma si esto te ayuda.
Intente eliminar
web
middleware
web
si está utilizando 5.2.27 o superior.
El problema ahora es que Laravel aplica automáticamente
web
middleware
web
a todas las rutas dentro de
routes.php
y si está tratando de agregarlo manualmente, puede obtener errores.
app/Providers/RouteServiceProvider.php
de la versión 5.2.27 ahora agrega middleware web a todas las rutas dentro de
routes.php
:
protected function mapWebRoutes(Router $router)
{
$router->group([
''namespace'' => $this->namespace, ''middleware'' => ''web'',
], function ($router) {
require app_path(''Http/routes.php'');
});
}
Use debajo de la línea en su controlador
usar Validator;
Agregue el siguiente código en la función de su controlador donde se envía su solicitud.
$validator = Validator::make($request->all(), [
''fname'' => ''required|max:20|min:4'',
''uemail'' => ''required|email'',
''message'' => ''required'',
]);
if ($validator->fails()) {
$messages = $validator->messages();
return Redirect::back()->withErrors($messages)->withInput($request->all());
}
En tu página de vista
@if ($errors->any())
<label for="fname" class="error">{{ $errors->first(''fname'') }}</label>
@endif
Para mostrar el error sabio de campo individual.