Implement the Educational Qualification form | CV create Web | Code Abe Academy

This tutorial will teach you how to make user educational qualification form in CV create Web with validation using Laravel. Let’s do it step by step.





Educational Qualification Form

Now, Let's create. 

  1. Create educational-qualification.blade.php file.
  2. Add bootstrap.
  3. Add form-container.
  4. Form container 
    <section class="min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
          <div class="container-fluid ">
            <div class="row justify-content-md-center">
                <div class="col-md-10 ">
                    <div class="card px-5 py-3 mt-3 shadow">
                        <h1 class="text-info text-center mt-2 mb-4">Educational Qualification</h1>
    
                    </div>
                </div>
            </div>
        </div>
        </section>
    
  5. Add form with validation.
  6. educational-qualification.blade.php 
    <form class="needs-validation" action="{{route('saveEducationalQualification')}}" method="POST" novalidate>
                            @csrf
                            <div class="row">
    
                                <table class="table table-bordered" id="table">
                                    <thead>
                                        <tr>
                                            <th>Qualification</th>
                                            <th>Institute Name</th>
                                            <th>Description </th>
                                            <th>Started Date</th>
                                            <th>End Date</th>
                                            <th>Action</th>
                                        </tr>
                                    </thead>
                                    <tbody id="tableBody">
                                        <!-- Table rows go here -->
                                        <tr>
                                            <td><input type="text" name="data[0][qualification]" class="form-control"></td>
                                            <td><input type="text" name="data[0][institute_name]" class="form-control">
                                            </td>
                                            <td><textarea type="text" name="data[0][description]" class="form-control" rows="3"></textarea>
                                            </td>
                                            <td>
                                                    <input type="text" name="data[0][started_date]" class="form-control year-picker" placeholder="YYYY" maxlength="4" pattern="\d{4}">
                                                </td>
                                                <td>
                                                    <input type="text" name="data[0][end_date]" class="form-control year-picker" placeholder="YYYY" maxlength="4" pattern="\d{4}">
                                                </td>
                                            <td><button type="button" name="add" id="add"
                                                    class="btn btn-success">Add Row </button>
                                            </td>
    
                                        </tr>
                                    </tbody>
                                </table>
    
                            </div>
    
                            <div class="mb-2">
                                <div class="d-grid">
                                    <button type="submit" class="btn btn-primary float-right">Next&gt;</button>
                                </div>
                            </div>
                        </form>
    
  7. Add Table Script
  8. educational-qualification.blade.php
    <script>
        $(document).ready(function(){
            $('.year-picker').on('input', function() {
                this.value = this.value.replace(/[^0-9]/g, ''); 
                if (this.value.length > 4) this.value = this.value.slice(0, 4); 
            });
    
            var i = 0;
            $('#add').click(function() {
                ++i;
                $('#table').append(
                    `<tr>
                        <td>
                            <input type="text" name="data[` + i + `][qualification]" class="form-control"/>
                        </td>
                        <td>
                            <input type="text" name="data[` + i + `][institute_name]" class="form-control"/>
                        </td>
                        <td>
                            <textarea type="text" name="data[` + i + `][description]" class="form-control" rows="3"></textarea>
                        </td>
                        <td>
                            <input type="text" name="data[` + i + `][started_date]" class="form-control year-picker" placeholder="YYYY" maxlength="4" pattern="\d{4}"/>
                        </td>
                        <td>
                            <input type="text" name="data[` + i + `][end_date]" class="form-control year-picker" placeholder="YYYY" maxlength="4" pattern="\d{4}"/>
                        </td>
                        <td>
                            <button type="button" class="btn btn-danger remove-table-row">Remove</button>
                        </td>
                    </tr>`);
                    
                $('.year-picker').on('input', function() {
                    this.value = this.value.replace(/[^0-9]/g, '');
                    if (this.value.length > 4) this.value = this.value.slice(0, 4);
                });
            });
    
            $(document).on('click', '.remove-table-row', function() {
                $(this).parents('tr').remove();
            });
        });
    </script>
  9. Add Form cloudflare Script
  10. educational-qualification.blade.php
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"
            integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ=="
            crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  11. Create a controller.
  12. EducationalQualificationController
    php artisan make:controller EducationalQualificationController
  13. Create a route.
  14. Web.php
    uuse App\Http\Controllers\EducationalQualificationController;
    
    Route::get('/educational-qualification',[EducationalQualificationController::class,'educational_qualification'])->name('educational-qualification');
    
  15. Create Educational Qualification view function.
  16. EducationalQualificationController
    public function educational_qualification()  {
            return view('educational-qualification');
        }
    
  17. Make EducationalQualification Model and Table
  18. EducationalQualification Model and EducationalQualifications Table
    php artisan make:model EducationalQualification -m
  19. Create the EducationalQualificationsTable
  20. EducationalQualificationsTable
    Schema::create('educational_qualifications', function (Blueprint $table) {
                $table->id();
                $table->string('qualification')->nullable();
                $table->string('institute_name')->nullable();
                $table->string('description')->nullable();
                $table->string('started_date')->nullable();
                $table->string('end_date')->nullable();
                $table->timestamps();
            });
  21. Create the EducationalQualification Model
  22. EducationalQualification Model
    protected $table = 'educational_qualifications';
        protected $primarykey = 'id';
        protected $fillable = ['qualification','institute_name','description','started_date','end_date'];
    
  23. Add ForeignKey
  24. EducationalQualifications Table
    $table->unsignedBigInteger('user_id');
                $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    
    EducationalQualification Model
    protected $fillable = ['user_id'];
          
          public function users(){
            return $this->belongsTo(User::class);
        }
    
    User Model
    public function educational_qualifications()
        {
            return $this->hasMany(EducationalQualification::class, 'user_id','id');
        }
    
  25. Migrate the tables
  26. Migrate Tables
    php artisan migrate
    
  27. Add saveEducationalQualification route.
  28. Web.php
    use App\Http\Controllers\EducationalQualificationController;
    
    Route::post('/saveEducationalQualification',[EducationalQualificationController::class,'saveEducationalQualification'])->name('saveEducationalQualification');
    
  29. Create saveEducationalQualification function.
  30. EducationalQualificationController
    use App\Models\EducationalQualification;
          use Illuminate\Support\Facades\Validator;
    
    public function saveEducationalQualification(Request $request)
        { {
                $rules = [
                    'data.*.qualification' => 'nullable|string',
                    'data.*.institute_name' => 'nullable|string',
                    'data.*.description' => 'nullable|string',
                    'data.*.started_date' => 'nullable|string',
                    'data.*.end_date' => 'nullable|string'
                ];
    
                $validator = Validator::make($request->all(), $rules);
    
                if ($validator->fails()) {
                    return redirect()->back()->withErrors($validator)->withInput();
                }
            }
    
            if (auth()->check()) {
    
                $userId = auth()->id();
    
                if (!$userId) {
    
                    return 'Error: User ID is null';
                }
    
                foreach ($request->data as $key => $value) {
                    $educational_qualification = new EducationalQualification();
                    $educational_qualification->user_id = $userId;
                    $educational_qualification->qualification = $value['qualification'];
                    $educational_qualification->institute_name = $value['institute_name'];
                    $educational_qualification->description = $value['description'];
                    $educational_qualification->started_date = $value['started_date'];
                    $educational_qualification->end_date = $value['end_date'];
                    $educational_qualification->save();
                }
    
    
              return 'success';
    
            } else {
    
                return redirect()->route('login');
            }
        }
    

Post a Comment

Previous Post Next Post