Package Data | |
---|---|
Maintainer Username: | azandrew-sidoine |
Maintainer Contact: | asmyns.platonnas29@gmail.com (azandrew-sidoine) |
Package Create Date: | 2022-12-28 |
Package Last Update: | 2025-01-08 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-01-17 03:00:10 |
Package Statistics | |
---|---|
Total Downloads: | 373 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 0 |
Total Watchers: | 1 |
Total Forks: | 0 |
Total Open Issues: | 0 |
Laravexists
package provides developper with utility and classes that calls exists
rule on data source. It internally use the laravel Rule::exists()
or an existance verifier class that must provides implementation that check data existance on a given data source.
To install the library in a PHP project, use the composer package manager:
composer require drewlabs/laravexists
The command above install the library and all it dependencies.
The library can be used as a drop-in replacement for Laravel default Rule::exists()
validation rule as it support it internally.
use Drewlabs\LaravExists\Exists;
//...
class MyRequest extends FormRequest {
public function rules()
{
return [
// ... validation rules
'post_id' => [new Exists('posts', 'id')]
// Or using the factory function
'post_id' => [Exists::create('posts', 'id')]
]
}
}
The library comes with an HTTP existance verifier with can be used as a factory instance for verifying existance of a data using REST interface. It's kind of the main purpose of this library as it allow to check if a given data exist on a given server remoetly. The library relies on query parameter do send query that filters the result from the the HTTP server (if supported by the server).
// Import the exist validation rule
use Drewlabs\LaravExists\Exists;
// Import the http existance client class
use Drewlabs\LaravExists\HTTPExistanceClient;
//...
class MyRequest extends FormRequest {
public function rules()
{
return [
// ... validation rules
'post_id' => [
Exists::create(
HTTPExistanceClient::create(
'http://localhost:3000/api/posts',
)->withBearerToken($this->bearerToken()),
// The attribute used for check on the ressult from the HTTP server
'id'
)
]
]
}
}
Note By default the HTTPExistanceClient
class uses an internal callback that filter and validate the entry data
of the server json response. To override the default implementation:
// Import the http existance client class
use Drewlabs\LaravExists\HTTPExistanceClient;
// ...
HTTPExistanceClient::create(
'<RESOURCE_URL>',
[], // Http headers
// The response is a PHP object or array (dictionary)
// $key is the column or key passed to the Exists construction
// $value is the value provided by the user
function($response, $key, $value) {
// TODO, check if the response contains the data
return true; // true or false base on the result of the previous step
}
)
// ...
The library comes with an interface that can be implemented to provide a custom existance, verifier:
use Drewlabs\LaravExists\ExistanceVerifier;
class MyCustomVerifier implements ExistanceVerifier
{
public function exists(string $column, $value)
{
// TODO: Provide existance verification implementation
}
}
Case required to customize the message output to user when validation fails, use the withMessage()
method or pass a third or fourth argument to the class constructor:
use Drewlabs\LaravExists\Exists;
// ...
class MyFormRequest
{
public function rules()
{
return [
// ...
'post_id' => [new Exists('table', 'column', 'The selected post_id is invalid')]
// In case using existance verifier
'comment_id' => [new Exists(new InstanceClass, 'column', 'The selected post_id is invalid')]
]
}
}
Note The library is still under development as the API might change.