Repository navigation
Laravel Precognition always returns a 204 success #60594
|
I'm using a fresh install of Laravel, Inertia, and Vue. Here is my set up: // routes/web.php
use App\Http\Requests\EmailRequest;
use Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests;
use Illuminate\Support\Facades\Route;
Route::inertia('/', 'Welcome')->name('home');
Route::post('/', function (EmailRequest $request) {
dd(request()->all(), request()->safe());
})->middleware(HandlePrecognitiveRequests::class);<?php
// app\Http\Requests\EmailRequest.php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class EmailRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'email' => 'email',
];
}
}// resources\js\pages\Welcome.vue
<script setup lang="ts">
import { Form } from '@inertiajs/vue3';
</script>
<template>
<Form method="post" #default="{errors, validate}">
<input name="email" value="123">
<p>{{ errors.email }}</p>
<a @click="validate()">Validate</a><br>
<button>Submit</button>
</Form>
</template>Clicking Submit will display the error, but clicking Validate will return have precognition return 204 response. Am I missing some code somewhere to make this work? |
Replies: 2 comments 1 reply
|
The issue is that Inertia's built-in FixYou need to use 1. Install the package: npm install laravel-precognition-vue-inertia2. Update <script setup lang="ts">
import { useForm } from 'laravel-precognition-vue-inertia';
const form = useForm('post', '/', {
email: '',
});
</script>
<template>
<form @submit.prevent="form.submit()">
<input
v-model="form.email"
name="email"
type="email"
/>
<p v-if="form.invalid('email')">{{ form.errors.email }}</p>
<a @click="form.validate('email')">Validate</a><br />
<button type="submit">Submit</button>
</form>
</template>Why this happens
|
|
This was solved by laravel/maestro#173. Thanks @RobertBoes! |
This was solved by laravel/maestro#173. Thanks @RobertBoes!