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

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Fluent Rule Builders for All Laravel Validation Rules image

Fluent Rule Builders for All Laravel Validation Rules

Read article
Laravel URL AI Transformer: Extract Structured Data From URLs image

Laravel URL AI Transformer: Extract Structured Data From URLs

Read article
Rule Builders for Every Validation Rule in Laravel 13.36 image

Rule Builders for Every Validation Rule in Laravel 13.36

Read article
PHP News: A New Site for PHP Releases, RFCs, and Packages image

PHP News: A New Site for PHP Releases, RFCs, and Packages

Read article
Pause Polling in Background Tabs in Inertia.js v3.9 image

Pause Polling in Background Tabs in Inertia.js v3.9

Read article
Look What You Helped Me Build image

Look What You Helped Me Build

Read article