baha2odeh/yii2-precognition

Yii2 Precognition

Installs: 19

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:yii2-extension

v0.001 2024-11-05 13:15 UTC

This package is auto-updated.

Last update: 2025-03-05 14:11:49 UTC


README

Yii2 Precognition

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist baha2odeh/yii2-precognition "*"

or add

"baha2odeh/yii2-precognition": "*"

to the require section of your composer.json file.

Usage

Once the extension is installed, simply use it in your code by:

add this trait to the ActiveRecord

class User extends ActiveRecord {

...
use \Baha2Odeh\Precognition\ValidateTrait;
...

You can also use this method with a custom model

$this->handlePrecognition();

This method stops request processing if there are no errors and the request is a 'precognition' request, meaning it's not an actual submission but a preliminary check.

class LoginForm extends Model {

...
use \Baha2Odeh\Precognition\ValidateTrait;
...

public function process(){
    ...
    if(!$this->validate()){
        return false;
    }
    $this->handlePrecognition();
    ...
}

Last step to change the restful response serializer to handle the 'precognition' requests

class UserController extends \yii\rest\ActiveController
{
    ...
    public $serializer = \Baha2Odeh\Precognition\Serializer::class;
    ...

in frontend side you have to add a new header in the axios requests to allow Yii to return 'precognition' response in case the submit was failed

import axios from 'axios'
import { client } from 'laravel-precognition-vue';

axios.interceptors.request.use(config => {
config.headers['precognition-on-submit'] = "true"
return config
})

client.use(axios)