Inertia + laravel insert operation

Inertia + laravel insert operation

A. Create.jsx

import Navbar from "@/Layouts/Navbar";
import { Head, Link, router } from "@inertiajs/react";
import React from "react";
import { useState } from 'react'

function Create({errors}) {
    const [values, setValues] = useState({
        first_name: "",
        last_name: "",
        email: "",
      })

      function handleChange(e) {
        const key = e.target.id;
        const value = e.target.value

        setValues(values => ({
            ...values,
            [key]: value,
        }))
      }

      function handleSubmit(e) {
        e.preventDefault()
        router.post("form-submit", values)
      }

    return (
        <div>
           <Navbar />

    <form onSubmit={handleSubmit}><br/><br/>

      <label htmlFor="first_name">First name:</label>
      <input className="form-control" id="first_name" value={values.first_name} onChange={handleChange} /><br/>
      {errors.first_name && <small>{errors.first_name}</small>}<br/>

      <label htmlFor="last_name">Last name:</label>
      <input className="form-control" id="last_name" value={values.last_name} onChange={handleChange} /><br/>
      {errors.last_name && <small>{errors.last_name}</small>}<br/>

      <label htmlFor="email">Email:</label>
      <input className="form-control" id="email" value={values.email} onChange={handleChange} /><br/>
      {errors.email && <small>{errors.email}</small>}<br/>

      <buttontype="submit"className="btn btn-primary"

     >Submit</button>

    </form>

        </div>

    )

}

export default Create;
B. web.php
Route::post('/form-submit', [HomeController::class, 'form_submit'])->name('form-submit');
C. HomeController.php
    public function form_submit(Request $req){

        $this->validate($req, [
            'first_name' => ['required'],
            'last_name' => ['required'],
            'email' => ['required'],
        ]);

        $query = DB::table('test')->insert([
            'name' => $req->first_name. ' '.$req->last_name,
            'email' => $req->email
         ]);
        
         return Inertia::render('Create');

    }

Leave a Reply