Hey! Sure, here is a stripped down version just using name.
Vue Component
<script setup>
import JetFormSection from '@/Jetstream/FormSection.vue';
import JetLabel from '@/Jetstream/Label.vue';
import JetInput from '@/Jetstream/Input.vue';
import JetInputError from '@/Jetstream/InputError.vue';
import JetButton from '@/Jetstream/Button.vue';
import { useForm } from '@inertiajs/inertia-vue3';
const form = useForm({
name: '',
});
const createReview = () => {
form.post(route('review-management.store'));
};
</script>
<template>
<JetFormSection @submitted="createReview">
<template #title> Review </template>
<template #description>
lorem ipsum
</template>
<template #form>
<JetInput
type="text"
v-model="form.name"
/>
<JetInputError :message="form.errors.name" class="mt-2" />
<template #actions>
<JetButton :class="{ 'opacity-25': form.processing }" :disabled="form.processing"
>Save
</JetButton>
</template>
</JetFormSection>
</template>
Route
Route::middleware(['auth:sanctum', config('jetstream.auth_session'), 'verified',])->group(function () {
Route::prefix('review-management')->name('review-management.')->group(function() {
Route::get('/', [ReviewsController::class, 'index'])->name('index');
Route::get('/create', [ReviewsController::class, 'create'])->name('create');
Route::get('/{review}', [ReviewsController::class, 'show'])->name('show');
Route::put('/{review}', [ReviewsController::class, 'update'])->name('update');
Route::post('/store', [ReviewsController::class, 'store'])->name('store');
Route::delete('/delete/{review}', [ReviewsController::class, 'delete'])->name('delete');
});
});
Review Controller
public function store(ReviewCreateRequest $request)
{
Review::fromRequest($request);
session()->flash('flash.banner', 'Review has been created!');
session()->flash('flash.bannerStyle', 'success');
return Redirect::route('review-management.index');
}
Create Request
class ReviewCreateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return auth()->check();
}
/**
* @return string[]
*/
public function rules()
{
return [
'name' => 'required',
];
}
/**
* @return string[]
*/
public function messages()
{
return [
'name.required' => 'Please add a review name',
];
}
}
Review model - fromRequest
public static function fromRequest(ReviewCreateRequest $request): self
{
$review = new Review();
$review->name = $request->name;
$review->save();
return $review;
}
The actual requests are working, I can create , update and delete fine - It's when the fields are blank and the form is submitted - I get no validation errors