Hello Devs,
In this tutorial, we are going to learn about bootstrap modal form validation in laravel app.
Follow this step by step guide given below:
Step 1 :
Install Laravel App
composer create-project --prefer-dist laravel/laravel blog
Step 2 :
Setup Database Configuration open ".env" file and change the database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Enter_Your_Database_Name
DB_USERNAME=Enter_Your_Database_Username
DB_PASSWORD=Enter_Your_Database_Password
Step 3 :
Create Table Migration and Model
php artisan make:model Book -m
/database/migrations/2020_05_27_100722_create_books_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('auther_name');
$table->longText('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('books');
}
}
Run this command:
php artisan migrate
app/Book.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
protected $fillable = ['name','description','auther_name'];
}
Step 4 :
Create Route app/Book.php
Route::get('books','BookController@index');
Route::post('books','BookController@store')->name(books.store);
Step 5 :
Create Controller
php artisan make:controller BookController
app/http/controller/BookController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Book;
class BookController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('book.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validator = \Validator::make($request->all(), [
'name' => 'required',
'auther_name' => 'required',
'description' => 'required',
]);
if ($validator->fails())
{
return response()->json(['errors'=>$validator->errors()->all()]);
}
$input = $request->all();
Book::create($input);
return response()->json(['success'=>'Data is successfully added']);
}
}
Step 6 :
Create Blade File /resources/views/book/create.blade.php
<html>
<head>
<title>Laravel Bootstrap Modal Form Validation Example - Rathorji.in</title>
<meta name="_token" content="{{csrf_token()}}" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha256-aAr2Zpq8MZ+YA/D6JtRD3xtrwpEz2IqOS+pWD/7XKIw=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha256-OFRAJNoaD8L3Br5lglV7VyLRf0itmoBzWUoM+Sji4/8=" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<div class="col-md-8 offset-2 mt-5">
<div class="card">
<div class="card-header bg-info">
<h5 class="text-white text-center">Laravel Bootstrap Modal Form Validation Example - Rathorji.in</h5>
</div>
<div class="card-body">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Open Form
</button>
</div>
</div>
</div>
</div>
<!-- Button trigger modal -->
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Laravel Bootstrap Modal Form Validation Example - Rathorji.in</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="alert alert-danger" style="display:none"></div>
<form class="image-upload" method="post" action="{{ route('books.store') }}" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Name</label>
<input type="text" name="name" id="name" class="form-control"/>
</div>
<div class="form-group">
<label>Author Name</label>
<input type="text" name="auther_name" id="auther_name" class="form-control"/>
</div>
<div class="form-group">
<label>Description</label>
<textarea name="description" class="textarea form-control" id="description" cols="40" rows="5"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" id="formSubmit">Save</button>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('#formSubmit').click(function(e){
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
$.ajax({
url: "{{ url('/books') }}",
method: 'post',
data: {
name: $('#name').val(),
auther_name: $('#auther_name').val(),
description: $('#description').val(),
},
success: function(result){
if(result.errors)
{
$('.alert-danger').html('');
$.each(result.errors, function(key, value){
$('.alert-danger').show();
$('.alert-danger').append('<li>'+value+'</li>');
});
}
else
{
$('.alert-danger').hide();
$('#exampleModal').modal('hide');
}
}
});
});
});
</script>
</body>
</html>
Run this command:
php artisan serve
Open this URL:
http://localhost:8000/books
I hope this example helps you.