News

Laravel Precognition Updates are Here

Published
Laravel Precognition Updates are Here image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

Laravel Precognition was overhauled and ships with a fresh perspective on predicting the outcome of a future HTTP request. The Laravel team has taken the original version and polished it to streamline front-end and server-side validation with popular front-end tools:

The Precognition docs have instructions for using Precognition with Vue, React , Vue + Inertia.js, and React + Inertia.js to streamline validation. Regardless of the front-end technology you use, routes that tap into Precognition only need to provide the framework-provided middleware:

use App\Http\Requests\CreateUserRequest;
use Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests;
 
Route::post('/users', function (CreateUserRequest $request) {
// ...
})->middleware([HandlePrecognitiveRequests::class]);

Depending on your front-end technology, installing the accompanying NPM module makes validation with Precognition a breeze. For example, the following is a form component with precognition validation using the laravel-precognition-vue module:

<script setup>
import { useForm } from 'laravel-precognition-vue';
 
const form = useForm('post', '/users', {
name: '',
email: '',
});
 
const submit = () => form.submit();
</script>
 
<template>
<form @submit.prevent="submit">
<label for="name">Name</label>
<input
id="name"
v-model="form.name"
@change="form.validate('name')"
/>
<div v-if="form.invalid('name')">
{{ form.errors.name }}
</div>
 
<label for="email">Email</label>
<input
id="email"
type="email"
v-model="form.email"
@change="form.validate('email')"
/>
<div v-if="form.invalid('email')">
{{ form.errors.email }}
</div>
 
<button>Create User</button>
</form>
</template>

As the user fills out the form, Precognition will handle live validation output powered by Laravel validation rules on the server-side form request.

The front-end also has some useful methods to determine the validation of fields and general things about validation:

form.hasErrors();
form.valid('email');
form.invalid('email');
form.validating;
 
form.submit()
.then(response => {
form.reset();
// ...
})
.catch(error => {
// ...
});

Check out the documentation for other features like $request->isPrecognative() in the server-side form request, which you can use to manage side effects and adjust validation rules.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Laravel Rulebook: Business Rules That Change by Date image

Laravel Rulebook: Business Rules That Change by Date

Read article
Taylor disabled GitHub Issues on most Laravel open-source packages. image

Taylor disabled GitHub Issues on most Laravel open-source packages.

Read article
Exclude Vendor and Default Commands in `php artisan dev` image

Exclude Vendor and Default Commands in `php artisan dev`

Read article
The Laracon Archive image

The Laracon Archive

Read article
Group Adjacent Collection Items in Laravel with chunkBy() image

Group Adjacent Collection Items in Laravel with chunkBy()

Read article
Laravel queue:work Now Prints Why the Worker Stopped image

Laravel queue:work Now Prints Why the Worker Stopped

Read article