User57
User57

Reputation: 2505

Laravel 5.2 Validation errors not appearing in Blade

I want to show validation error while giving invalid input in view page. But Error message not appearing in view page. If possible someone give the solution please.

Here is the controller:

public function saveStudent(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');
    }

Here is the view page:

<html>
    <head> 
        <title> Create Course </title>

    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    </head>
    <body>

        <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"  placeholder="Name">
        </div>
        <div class="form-group">
          <label>Email</label>
          <input type="email" name="email" class="form-control"  placeholder="email">
        </div>
        <div class="form-group">
          <label>Phone Number</label>
          <input type="text" name="phone" class="form-control"  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>
    @if(count($errors)>0)
    <div class="alert alert-danger">
      <strong>Whoops!</strong> Enter Valid Input</br>
      <ul>
        @foreach($errors->all() as $error)
        <li>{{$error}}</li>
        @endforeach
      </ul>
    </div>
  @endif
    </body>
</html>

Upvotes: 0

Views: 506

Answers (1)

krishnakumar kk
krishnakumar kk

Reputation: 289

Modify your function like the following example:

public function saveStudent(Request $request){
           $rules = [
            'name' => 'required|max:120',
            'email' => 'required|email|unique:users',
            'phone' => 'required|min:11|numeric',
           'course_id'=>'required'
            ];

         $validator = Validator::make($request->all(),$rules);
        if( $validator->fails() )
        {
           return redirect()->route( 'your route here') )->withErrors( $validator )->withInput();
        }else{

        $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');
       }
    }

Upvotes: 1

Related Questions