Laravel 8 Basic CRUD

Laravel 8 Basic CRUD

Step 1: Update Your .env File for Database Credentials

Make sure your .env file (in the root of your Laravel project) has the correct database settings:

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_learn DB_USERNAME=root DB_PASSWORD=

Step 2: Create the Upload Form

Save this as resources/views/form.blade.php.

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Form</title> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:400,700"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="http://cdn.bootcss.com/toastr.js/latest/css/toastr.min.css"> <style> body { background: #f8f6f6; font-family: 'Roboto', sans-serif; } .signup-form { width: 40%; margin: 0 auto; padding: 30px 0; } .signup-form form { background: #fff; padding: 30px; border-radius: 3px; box-shadow: 0px 2px 2px rgba(0,0,0,0.3); } .signup-form h2 { margin-bottom: 20px; } .radio { display: block; margin: 16px 0; } </style> </head> <body> <div class="signup-form"> <form action="{{ route('form/save') }}" method="POST" enctype="multipart/form-data"> @csrf <h2>Form Basic</h2> <hr> <div class="form-group"> <label>Full Name *</label> <input type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}"> @error('name') <div class="text-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label>Gender *</label><br> <label class="radio"><input type="radio" name="gander" value="male"> <span>Male</span></label> <label class="radio"><input type="radio" name="gander" value="female"> <span>Female</span></label> @error('gander') <div class="text-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label>Age *</label> <input type="number" class="form-control @error('age') is-invalid @enderror" name="age" value="{{ old('age') }}"> @error('age') <div class="text-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label>Email *</label> <input type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}"> @error('email') <div class="text-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <label>Document *</label> <input type="file" class="form-control @error('upload') is-invalid @enderror" name="upload"> @error('upload') <div class="text-danger">{{ $message }}</div> @enderror </div> <div class="form-group"> <button type="submit" class="btn btn-primary btn-lg">Save</button> </div> </form> </div> <script src="http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> <script src="http://cdn.bootcss.com/toastr.js/latest/js/toastr.min.js"></script> {!! Toastr::message() !!} </body> </html>

Step 3: Define Routes (routes/web.php)

use Illuminate\Support\Facades\Route; use App\Http\Controllers\FormController; Route::get('/', fn () => redirect('form/new')); Route::get('form/new', [FormController::class, 'index'])->name('form/new'); Route::post('form/save', [FormController::class, 'saveRecord'])->name('form/save');

Step 4: Create Controller

namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Brian2694\Toastr\Facades\Toastr; use App\Models\form_basic; class FormController extends Controller { public function index() { return view('form'); } public function saveRecord(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'age' => 'required|numeric', 'gander' => 'required|in:male,female', 'email' => 'required|email', 'upload' => 'required|file|max:1024', ]); DB::beginTransaction(); try { $file_name = null; if ($request->hasFile('upload')) { $file = $request->file('upload'); $file_name = time().'_'.$file->getClientOriginalName(); $file->storeAs('upload', $file_name, 'local'); } form_basic::create([ 'name' => $request->name, 'age' => $request->age, 'gander' => $request->gander, 'email' => $request->email, 'upload' => $file_name, ]); DB::commit(); Toastr::success('Record created successfully!', 'Success'); return redirect()->back(); } catch (\Exception $e) { DB::rollBack(); Toastr::error('Something went wrong.', 'Error'); return redirect()->back(); } } }

Step 5: Create Model (app/Models/form_basic.php)

namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class form_basic extends Model { use HasFactory; protected $fillable = [ 'name', 'age', 'gander', 'email', 'upload' ]; }

Step 6: Create Migration

Run:

php artisan make:migration create_form_basics_table

Inside your migration file:

public function up() { Schema::create('form_basics', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('age'); $table->string('gander'); $table->string('email'); $table->string('upload'); $table->timestamps(); }); }

Then run:

php artisan migrate

Step 7: Install Toastr

composer require brian2694/laravel-toastr

In config/app.php:

'providers' => [ ... Brian2694\Toastr\ToastrServiceProvider::class, ], 'aliases' => [ ... 'Toastr' => Brian2694\Toastr\Facades\Toastr::class, ],

Then, publish the config if needed:

php artisan vendor:publish --provider="Brian2694\Toastr\ToastrServiceProvider"

Step 8: Run Your App

php artisan serve
Soeng Souy

Soeng Souy

Website that learns and reads, PHP, Framework Laravel, How to and download Admin template sample source code free.

Post a Comment

CAN FEEDBACK
close