نسخه:

پیش شناخت

معرفی

Laravel Precognition به شما این امکان را می دهد که نتیجه یک درخواست HTTP آینده را پیش بینی کنید. یکی از موارد استفاده اولیه از Precognition، توانایی ارائه اعتبار سنجی "زنده" برای برنامه جاوا اسکریپت ظاهری شما بدون نیاز به تکرار قوانین اعتبار سنجی باطن برنامه شما است. Precognition به ویژه با کیت های شروع کننده مبتنی بر اینرسی لاراول جفت می شود .

وقتی لاراول یک «درخواست پیش‌شناختی» دریافت می‌کند، تمام میان‌افزار مسیر را اجرا می‌کند و وابستگی‌های کنترل‌کننده مسیر، از جمله اعتبارسنجی درخواست‌های فرم را حل می‌کند - اما در واقع روش کنترل‌کننده مسیر را اجرا نمی‌کند.

اعتبار سنجی زنده

با استفاده از Vue

با استفاده از Laravel Precognition، می‌توانید تجربه‌های اعتبارسنجی زنده را بدون نیاز به تکرار قوانین اعتبارسنجی در برنامه Vue frontend خود به کاربران خود ارائه دهید. برای نشان دادن نحوه عملکرد آن، بیایید فرمی برای ایجاد کاربران جدید در برنامه خود بسازیم.

ابتدا برای فعال کردن Precognition برای یک مسیر، HandlePrecognitiveRequests میان افزار باید به تعریف مسیر اضافه شود. شما همچنین باید یک فرم درخواست ایجاد کنید تا قوانین اعتبارسنجی مسیر را در خود جای دهد:

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

در مرحله بعد، باید از طریق NPM، کمک‌کننده‌های Frontend Laravel Precognition را برای Vue نصب کنید:

npm install laravel-precognition-vue

با نصب بسته Laravel Precognition، اکنون می توانید با استفاده از تابع Precognition، یک شی فرم ایجاد کنید useForm ، روش HTTP ( post )، URL هدف ( /users ) و داده های فرم اولیه را ارائه دهید.

سپس، برای فعال کردن اعتبارسنجی زنده، متد فرم را validate در رویداد هر ورودی فراخوانی کنید change و نام ورودی را ارائه دهید:

<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 :disabled="form.processing">
Create User
</button>
</form>
</template>

اکنون، همانطور که فرم توسط کاربر پر می شود، Precognition خروجی اعتبارسنجی زنده را ارائه می دهد که توسط قوانین اعتبارسنجی در درخواست فرم مسیر ارائه می شود. هنگامی که ورودی‌های فرم تغییر می‌کنند، یک درخواست اعتبارسنجی «پیش‌شناختی» به برنامه لاراول شما ارسال می‌شود. می‌توانید با فراخوانی تابع فرم، مهلت زمانی برگشت را پیکربندی کنید setValidationTimeout :

form.setValidationTimeout(3000);

هنگامی که یک درخواست اعتبار سنجی در حین پرواز است، ویژگی فرم به صورت زیر validating خواهد بود true :

<div v-if="form.validating">
Validating...
</div>

هر گونه خطای اعتبارسنجی که در طول درخواست اعتبارسنجی یا ارسال فرم برگردانده شود، به طور خودکار errors شی فرم را پر می کند:

<div v-if="form.invalid('email')">
{{ form.errors.email }}
</div>

با استفاده از ویژگی فرم می توانید تعیین کنید که آیا فرم دارای خطا است hasErrors :

<div v-if="form.hasErrors">
<!-- ... -->
</div>

همچنین می‌توانید با ارسال نام ورودی به فرم‌ها valid و invalid توابع، تعیین کنید که آیا یک ورودی اعتبارسنجی شده است یا ناموفق:

<span v-if="form.valid('email')">
</span>
 
<span v-else-if="form.invalid('email')">
</span>

یک ورودی فرم فقط زمانی معتبر یا نامعتبر ظاهر می شود که تغییر کند و پاسخ تأیید اعتبار دریافت شود.

اگر زیرمجموعه‌ای از ورودی‌های فرم را با Precognition تأیید می‌کنید، پاک کردن دستی خطاها می‌تواند مفید باشد. forgetError برای رسیدن به این هدف می توانید از تابع فرم استفاده کنید :

<input
id="avatar"
type="file"
@change="(e) => {
form.avatar = e.target.files[0]
 
form.forgetError('avatar')
}"
>

البته، ممکن است در واکنش به پاسخ ارسال فرم کدی را نیز اجرا کنید. تابع فرم submit یک وعده درخواست Axios را برمی گرداند. این یک راه راحت برای دسترسی به بار پاسخ، بازنشانی ورودی‌های فرم در ارسال موفقیت‌آمیز، یا رسیدگی به درخواست ناموفق را فراهم می‌کند:

const submit = () => form.submit()
.then(response => {
form.reset();
 
alert('User created.');
})
.catch(error => {
alert('An error occurred.');
});

شما می توانید با بررسی ویژگی فرم تعیین کنید که آیا درخواست ارسال فرم در حال پرواز است یا خیر processing :

<button :disabled="form.processing">
Submit
</button>

با استفاده از Vue و Inertia

اگر می‌خواهید هنگام توسعه برنامه لاراول خود با Vue و Inertia شروعی داشته باشید، از یکی از کیت‌های شروع ما استفاده کنید . کیت های شروع لاراول دارای داربست احراز هویت Backend و Frontend برای برنامه جدید Laravel شما هستند.

قبل از استفاده از Precognition با Vue و Inertia، مطمئن شوید که مستندات کلی ما در مورد استفاده از Precognition با Vue را مرور کنید . هنگام استفاده از Vue با Inertia، باید کتابخانه Precognition سازگار با اینرسی را از طریق NPM نصب کنید:

npm install laravel-precognition-vue-inertia

پس از نصب، تابع Precognition یک کمک کننده فرم اینرسی را به همراه ویژگی های اعتبارسنجی که در بالا توضیح داده شد، useForm برمی گرداند .

روش کمک کننده فرم submit ساده شده است و نیاز به تعیین روش HTTP یا URL را از بین برده است. در عوض، می‌توانید گزینه‌های بازدید Inertia را به عنوان اولین و تنها آرگومان ارسال کنید. بعلاوه، submit روش همانگونه که در مثال Vue در بالا مشاهده می شود، یک Promise بر نمی گرداند. در عوض، می‌توانید هر یک از تماس‌های رویداد پشتیبانی‌شده Inertia را در گزینه‌های بازدید داده‌شده به submit روش ارائه دهید:

<script setup>
import { useForm } from 'laravel-precognition-vue-inertia';
 
const form = useForm('post', '/users', {
name: '',
email: '',
});
 
const submit = () => form.submit({
preserveScroll: true,
onSuccess: () => form.reset(),
});
</script>

با استفاده از React

با استفاده از Laravel Precognition، می‌توانید تجربه‌های اعتبارسنجی زنده را بدون نیاز به تکرار قوانین اعتبارسنجی در برنامه React frontend خود به کاربران خود ارائه دهید. برای نشان دادن نحوه عملکرد آن، بیایید فرمی برای ایجاد کاربران جدید در برنامه خود بسازیم.

ابتدا برای فعال کردن Precognition برای یک مسیر، HandlePrecognitiveRequests میان افزار باید به تعریف مسیر اضافه شود. شما همچنین باید یک فرم درخواست ایجاد کنید تا قوانین اعتبارسنجی مسیر را در خود جای دهد:

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

در مرحله بعد، باید کمک‌کننده‌های پیش‌فرض لاراول را برای React از طریق NPM نصب کنید:

npm install laravel-precognition-react

با نصب بسته Laravel Precognition، اکنون می توانید با استفاده از تابع Precognition، یک شی فرم ایجاد کنید useForm ، روش HTTP ( post )، URL هدف ( /users ) و داده های فرم اولیه را ارائه دهید.

برای فعال کردن اعتبارسنجی زنده، باید به هر ورودی change و blur رویداد گوش دهید. در change کنترل کننده رویداد، باید داده های فرم را با setData تابع تنظیم کنید، نام ورودی و مقدار جدید را ارسال کنید. سپس، در blur کنترل کننده رویداد، متد فرم را فراخوانی می کند validate و نام ورودی را ارائه می دهد:

import { useForm } from 'laravel-precognition-react';
 
export default function Form() {
const form = useForm('post', '/users', {
name: '',
email: '',
});
 
const submit = (e) => {
e.preventDefault();
 
form.submit();
};
 
return (
<form onSubmit={submit}>
<label for="name">Name</label>
<input
id="name"
value={form.data.name}
onChange={(e) => form.setData('name', e.target.value)}
onBlur={() => form.validate('name')}
/>
{form.invalid('name') && <div>{form.errors.name}</div>}
 
<label for="email">Email</label>
<input
id="email"
value={form.data.email}
onChange={(e) => form.setData('email', e.target.value)}
onBlur={() => form.validate('email')}
/>
{form.invalid('email') && <div>{form.errors.email}</div>}
 
<button disabled={form.processing}>
Create User
</button>
</form>
);
};

اکنون، همانطور که فرم توسط کاربر پر می شود، Precognition خروجی اعتبارسنجی زنده را ارائه می دهد که توسط قوانین اعتبارسنجی در درخواست فرم مسیر ارائه می شود. هنگامی که ورودی‌های فرم تغییر می‌کنند، یک درخواست اعتبارسنجی «پیش‌شناختی» به برنامه لاراول شما ارسال می‌شود. می‌توانید با فراخوانی تابع فرم، مهلت زمانی برگشت را پیکربندی کنید setValidationTimeout :

form.setValidationTimeout(3000);

هنگامی که یک درخواست اعتبار سنجی در حین پرواز است، ویژگی فرم به صورت زیر validating خواهد بود true :

{form.validating && <div>Validating...</div>}

هر گونه خطای اعتبارسنجی که در طول درخواست اعتبارسنجی یا ارسال فرم برگردانده شود، به طور خودکار errors شی فرم را پر می کند:

{form.invalid('email') && <div>{form.errors.email}</div>}

با استفاده از ویژگی فرم می توانید تعیین کنید که آیا فرم دارای خطا است hasErrors :

{form.hasErrors && <div><!-- ... --></div>}

همچنین می‌توانید با ارسال نام ورودی به فرم‌ها valid و invalid توابع، تعیین کنید که آیا یک ورودی اعتبارسنجی شده است یا ناموفق:

{form.valid('email') && <span></span>}
 
{form.invalid('email') && <span></span>}

یک ورودی فرم فقط زمانی معتبر یا نامعتبر ظاهر می شود که تغییر کند و پاسخ تأیید اعتبار دریافت شود.

اگر زیرمجموعه‌ای از ورودی‌های فرم را با Precognition تأیید می‌کنید، پاک کردن دستی خطاها می‌تواند مفید باشد. forgetError برای رسیدن به این هدف می توانید از تابع فرم استفاده کنید :

<input
id="avatar"
type="file"
onChange={(e) =>
form.setData('avatar', e.target.value);
 
form.forgetError('avatar');
}
>

البته، ممکن است در واکنش به پاسخ ارسال فرم کدی را نیز اجرا کنید. تابع فرم submit یک وعده درخواست Axios را برمی گرداند. این یک راه راحت برای دسترسی به بار پاسخ، بازنشانی ورودی‌های فرم در ارسال موفق فرم، یا رسیدگی به درخواست ناموفق را فراهم می‌کند:

const submit = (e) => {
e.preventDefault();
 
form.submit()
.then(response => {
form.reset();
 
alert('User created.');
})
.catch(error => {
alert('An error occurred.');
});
};

شما می توانید با بررسی ویژگی فرم تعیین کنید که آیا درخواست ارسال فرم در حال پرواز است یا خیر processing :

<button disabled={form.processing}>
Submit
</button>

با استفاده از React و Inertia

اگر می‌خواهید در هنگام توسعه برنامه لاراول خود با React و Inertia شروع کنید، از یکی از کیت‌های شروع ما استفاده کنید . کیت های شروع لاراول دارای داربست احراز هویت Backend و Frontend برای برنامه جدید Laravel شما هستند.

قبل از استفاده از Precognition با React و Inertia، مطمئن شوید که اسناد کلی ما در مورد استفاده از Precognition با React را مرور کنید . هنگام استفاده از React with Inertia، باید کتابخانه Precognition سازگار با اینرسی را از طریق NPM نصب کنید:

npm install laravel-precognition-react-inertia

پس از نصب، تابع Precognition یک کمک کننده فرم اینرسی را به همراه ویژگی های اعتبارسنجی که در بالا توضیح داده شد، useForm برمی گرداند .

روش کمک کننده فرم submit ساده شده است و نیاز به تعیین روش HTTP یا URL را از بین برده است. در عوض، می‌توانید گزینه‌های بازدید Inertia را به عنوان اولین و تنها آرگومان ارسال کنید. علاوه بر این، submit متد یک Promise را همانطور که در مثال React در بالا مشاهده می شود، بر نمی گرداند. در عوض، می‌توانید هر یک از تماس‌های رویداد پشتیبانی‌شده Inertia را در گزینه‌های بازدید داده‌شده به submit روش ارائه دهید:

import { useForm } from 'laravel-precognition-react-inertia';
 
const form = useForm('post', '/users', {
name: '',
email: '',
});
 
const submit = (e) => {
e.preventDefault();
 
form.submit({
preserveScroll: true,
onSuccess: () => form.reset(),
});
};

با استفاده از Alpine و Blade

با استفاده از Laravel Precognition، می‌توانید تجربه‌های اعتبارسنجی زنده را بدون نیاز به تکرار قوانین اعتبارسنجی در برنامه Alpine frontend خود به کاربران خود ارائه دهید. برای نشان دادن نحوه عملکرد آن، بیایید فرمی برای ایجاد کاربران جدید در برنامه خود بسازیم.

ابتدا برای فعال کردن Precognition برای یک مسیر، HandlePrecognitiveRequests میان افزار باید به تعریف مسیر اضافه شود. شما همچنین باید یک فرم درخواست ایجاد کنید تا قوانین اعتبارسنجی مسیر را در خود جای دهد:

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

در مرحله بعد، باید از طریق NPM کمک‌کننده‌های پیش‌فرض لاراول را برای Alpine نصب کنید:

npm install laravel-precognition-alpine

سپس، افزونه Precognition را با Alpine در resources/js/app.js فایل خود ثبت کنید:

import Alpine from 'alpinejs';
import Precognition from 'laravel-precognition-alpine';
 
window.Alpine = Alpine;
 
Alpine.plugin(Precognition);
Alpine.start();

با نصب و ثبت بسته Laravel Precognition، اکنون می توانید با استفاده از $form "جادوی Precognition" یک شی فرم ایجاد کنید، روش HTTP ( post )، URL هدف ( /users ) و داده های فرم اولیه را ارائه دهید.

change برای فعال کردن اعتبارسنجی زنده، باید داده‌های فرم را به ورودی مربوطه متصل کنید و سپس به رویداد هر ورودی گوش دهید . در change کنترل کننده رویداد، باید validate متد فرم را فراخوانی کنید و نام ورودی را ارائه دهید:

<form x-data="{
form: $form('post', '/register', {
name: '',
email: '',
}),
}">
@csrf
<label for="name">Name</label>
<input
id="name"
name="name"
x-model="form.name"
@change="form.validate('name')"
/>
<template x-if="form.invalid('name')">
<div x-text="form.errors.name"></div>
</template>
 
<label for="email">Email</label>
<input
id="email"
name="email"
x-model="form.email"
@change="form.validate('email')"
/>
<template x-if="form.invalid('email')">
<div x-text="form.errors.email"></div>
</template>
 
<button :disabled="form.processing">
Create User
</button>
</form>

اکنون، همانطور که فرم توسط کاربر پر می شود، Precognition خروجی اعتبارسنجی زنده را ارائه می دهد که توسط قوانین اعتبارسنجی در درخواست فرم مسیر ارائه می شود. هنگامی که ورودی‌های فرم تغییر می‌کنند، یک درخواست اعتبارسنجی «پیش‌شناختی» به برنامه لاراول شما ارسال می‌شود. می‌توانید با فراخوانی تابع فرم، مهلت زمانی برگشت را پیکربندی کنید setValidationTimeout :

form.setValidationTimeout(3000);

هنگامی که یک درخواست اعتبار سنجی در حین پرواز است، ویژگی فرم به صورت زیر validating خواهد بود true :

<template x-if="form.validating">
<div>Validating...</div>
</template>

هر گونه خطای اعتبارسنجی که در طول درخواست اعتبارسنجی یا ارسال فرم برگردانده شود، به طور خودکار errors شی فرم را پر می کند:

<template x-if="form.invalid('email')">
<div x-text="form.errors.email"></div>
</template>

با استفاده از ویژگی فرم می توانید تعیین کنید که آیا فرم دارای خطا است hasErrors :

<template x-if="form.hasErrors">
<div><!-- ... --></div>
</template>

همچنین می‌توانید با ارسال نام ورودی به فرم‌ها valid و invalid توابع، تعیین کنید که آیا یک ورودی اعتبارسنجی شده است یا ناموفق:

<template x-if="form.valid('email')">
<span></span>
</template>
 
<template x-if="form.invalid('email')">
<span></span>
</template>

یک ورودی فرم فقط زمانی معتبر یا نامعتبر ظاهر می شود که تغییر کند و پاسخ تأیید اعتبار دریافت شود.

شما می توانید با بررسی ویژگی فرم تعیین کنید که آیا درخواست ارسال فرم در حال پرواز است یا خیر processing :

<button :disabled="form.processing">
Submit
</button>

جمع آوری مجدد داده های فرم قدیمی

در مثال ایجاد کاربر که در بالا بحث شد، ما از Precognition برای انجام اعتبارسنجی زنده استفاده می کنیم. با این حال، ما در حال انجام یک ارسال فرم سنتی سمت سرور برای ارسال فرم هستیم. بنابراین، فرم باید با هر ورودی "قدیمی" و خطاهای اعتبار سنجی که از ارسال فرم سمت سرور بازگردانده شده است پر شود:

<form x-data="{
form: $form('post', '/register', {
name: '{{ old('name') }}',
email: '{{ old('email') }}',
}).setErrors({{ Js::from($errors->messages()) }}),
}">

از طرف دیگر، اگر می‌خواهید فرم را از طریق XHR ارسال کنید، می‌توانید از تابع فرم استفاده کنید submit که یک وعده درخواست Axios را برمی‌گرداند:

<form
x-data="{
form: $form('post', '/register', {
name: '',
email: '',
}),
submit() {
this.form.submit()
.then(response => {
form.reset();
 
alert('User created.')
})
.catch(error => {
alert('An error occurred.');
});
},
}"
@submit.prevent="submit"
>

پیکربندی Axios

کتابخانه های اعتبارسنجی Precognition از سرویس گیرنده Axios HTTP برای ارسال درخواست ها به باطن برنامه شما استفاده می کنند. برای راحتی، در صورت نیاز برنامه شما، نمونه Axios ممکن است سفارشی شود. برای مثال، هنگام استفاده از laravel-precognition-vue کتابخانه، می‌توانید سرصفحه‌های درخواست اضافی را به هر درخواست خروجی در فایل برنامه خود اضافه کنید resources/js/app.js :

import { client } from 'laravel-precognition-vue';
 
client.axios().defaults.headers.common['Authorization'] = authToken;

یا اگر قبلاً یک نمونه Axios پیکربندی شده برای برنامه خود دارید، ممکن است به Precognition بگویید که به جای آن از آن نمونه استفاده کند:

import Axios from 'axios';
import { client } from 'laravel-precognition-vue';
 
window.axios = Axios.create()
window.axios.defaults.headers.common['Authorization'] = authToken;
 
client.use(window.axios)

کتابخانه‌های Precognition با طعم Inertia فقط از نمونه پیکربندی‌شده Axios برای درخواست‌های اعتبارسنجی استفاده می‌کنند. فرم های ارسالی همیشه توسط اینرسی ارسال می شوند.

سفارشی کردن قوانین اعتبارسنجی

با استفاده از روش درخواست، می توان قوانین اعتبارسنجی اجرا شده در طول یک درخواست پیش شناختی را سفارشی کرد isPrecognitive .

به عنوان مثال، در یک فرم ایجاد کاربر، ممکن است بخواهیم اعتبار سنجی کنیم که رمز عبور فقط در فرم ارسال نهایی "غیرقابل نفوذ" است. برای درخواست‌های اعتبارسنجی پیش‌شناختی، ما به سادگی تأیید می‌کنیم که رمز عبور لازم است و حداقل 8 کاراکتر دارد. با استفاده از isPrecognitive متد، می‌توانیم قوانین تعریف‌شده توسط درخواست فرم خود را سفارشی کنیم:

<?php
 
namespace App\Http\Requests;
 
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rules\Password;
 
class StoreUserRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
protected function rules()
{
return [
'password' => [
'required',
$this->isPrecognitive()
? Password::min(8)
: Password::min(8)->uncompromised(),
],
// ...
];
}
}

مدیریت آپلود فایل

به‌طور پیش‌فرض، Laravel Precognition فایل‌ها را در طول درخواست اعتبارسنجی پیش‌شناختی آپلود یا تأیید نمی‌کند. این اطمینان حاصل می کند که فایل های بزرگ به طور غیر ضروری چندین بار آپلود نمی شوند.

به دلیل این رفتار، باید اطمینان حاصل کنید که برنامه شما قوانین اعتبار سنجی درخواست فرم مربوطه را سفارشی می کند تا فیلد را فقط برای ارسال کامل فرم مورد نیاز تعیین کند:

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
protected function rules()
{
return [
'avatar' => [
...$this->isPrecognitive() ? [] : ['required'],
'image',
'mimes:jpg,png'
'dimensions:ratio=3/2',
],
// ...
];
}

اگر می‌خواهید فایل‌ها را در هر درخواست اعتبارسنجی قرار دهید، می‌توانید validateFiles تابع را در نمونه فرم سمت کلاینت خود فراخوانی کنید:

form.validateFiles();

مدیریت عوارض جانبی

هنگام افزودن میان‌افزار به مسیر، باید در نظر داشته باشید که آیا در سایر HandlePrecognitiveRequests میان‌افزارها عوارض جانبی وجود دارد که باید در طول یک درخواست پیش‌شناختی نادیده گرفته شوند.

برای مثال، ممکن است میان‌افزاری داشته باشید که تعداد کل «تعامل‌های» هر کاربر با برنامه شما را افزایش می‌دهد، اما ممکن است نخواهید درخواست‌های پیش‌شناختی به‌عنوان یک تعامل حساب شوند. برای انجام این کار، ممکن است روش درخواست را isPrecognitive قبل از افزایش تعداد تعامل بررسی کنیم:

<?php
 
namespace App\Http\Middleware;
 
use App\Facades\Interaction;
use Closure;
use Illuminate\Http\Request;
 
class InteractionMiddleware
{
/**
* Handle an incoming request.
*/
public function handle(Request $request, Closure $next): mixed
{
if (! $request->isPrecognitive()) {
Interaction::incrementFor($request->user());
}
 
return $next($request);
}
}

آزمایش کردن

اگر می‌خواهید در تست‌های خود درخواست‌های پیش‌شناختی داشته باشید، لاراول TestCase دارای withPrecognition کمکی است که سربرگ درخواست را اضافه می‌کند Precognition .

به‌علاوه، اگر می‌خواهید ادعا کنید که یک درخواست پیش‌شناختی موفقیت‌آمیز بوده است، به‌عنوان مثال، هیچ خطای اعتبارسنجی را برنگرداند، می‌توانید از روش assertSuccessfulPrecognition روی پاسخ استفاده کنید:

it('validates registration form with precognition', function () {
$response = $this->withPrecognition()
->post('/register', [
'name' => 'Taylor Otwell',
]);
 
$response->assertSuccessfulPrecognition();
 
expect(User::count())->toBe(0);
});
public function test_it_validates_registration_form_with_precognition()
{
$response = $this->withPrecognition()
->post('/register', [
'name' => 'Taylor Otwell',
]);
 
$response->assertSuccessfulPrecognition();
$this->assertSame(0, User::count());
}