PHP code example of craftcms / laravel-ruleset-validation

1. Go to this page and download the library: Download craftcms/laravel-ruleset-validation library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

craftcms / laravel-ruleset-validation example snippets




namespace App\Data;

use App\Rulesets\CreatePostRuleset;
use CraftCms\RulesetValidation\Attributes\Ruleset;
use CraftCms\RulesetValidation\Concerns\HasRuleset;
use CraftCms\RulesetValidation\Contracts\ValidatesWithRuleset;

#[Ruleset(CreatePostRuleset::class)]
class CreatePostData implements ValidatesWithRuleset
{
    use HasRuleset;

    public function __construct(
        public string $title,
        public ?string $slug = null,
        public ?string $body = null,
    ) {}

    public function validationData(): array
    {
        return [
            'title' => $this->title,
            'slug' => $this->slug,
            'body' => $this->body,
        ];
    }
}



namespace App\Rulesets;

use CraftCms\RulesetValidation\Ruleset;

class CreatePostRuleset extends Ruleset
{
    public function rules(): array
    {
        return [
            'title' => ['

$data = new CreatePostData(
    title: 'Rulesets are nice',
    slug: 'rulesets-are-nice',
    body: '...',
);

$validated = $data->ruleset->validate();

$validated = $data->ruleset
    ->only(['title', 'slug'])
    ->validate();

$ruleset = $data->ruleset->only(['title']);

if ($ruleset->fails()) {
    $validator = $ruleset->getValidator();

    // Inspect $validator->errors()
}



namespace App\Rulesets;

use CraftCms\RulesetValidation\Ruleset;

class StorePostRuleset extends Ruleset
{
    public function rules(): array
    {
        return [
            'title' => ['

use App\Rulesets\StorePostRuleset;

class PostController
{
    public function store(StorePostRuleset $ruleset)
    {
        $validated = $ruleset->validate();

        // ...
    }
}

$ruleset = new StorePostRuleset(subject: $request);

use Illuminate\Validation\Rule;

class PostRuleset extends Ruleset
{
    public const SCENARIO_DRAFT = 'draft';
    
    public function rules(): array
    {
        return [
            'title' => [
                Rule::

$validated = $data->ruleset
    ->useScenario(PostRuleset::SCENARIO_DRAFT)
    ->validate();

$validated = $data->ruleset->withScenario(
    PostRuleset::SCENARIO_DRAFT,
    fn () => $data->ruleset->validate(),
);

use App\Rulesets\PostRuleset;
use CraftCms\RulesetValidation\Attributes\Scenario;

class PostController
{
    public function storeDraft(#[Scenario(PostRuleset::SCENARIO_DRAFT)] PostRuleset $ruleset)
    {
        $validated = $ruleset->validate();

        // ...
    }
}

use App\Rulesets\CreatePostRuleset;
use CraftCms\RulesetValidation\Attributes\Ruleset;

#[Ruleset(CreatePostRuleset::class)]
class CreatePostData implements ValidatesWithRuleset
{
    // ...
}

use App\Rulesets\AdminPostRuleset;
use App\Rulesets\CreatePostRuleset;
use CraftCms\RulesetValidation\Concerns\HasRuleset;
use CraftCms\RulesetValidation\Contracts\ValidatesWithRuleset;

class CreatePostData implements ValidatesWithRuleset
{
    use HasRuleset;

    public function __construct(
        public bool $isAdmin,
        public string $title,
    ) {}

    public function validationData(): array
    {
        return [
            'title' => $this->title,
        ];
    }

    public function ruleset(): string
    {
        return $this->isAdmin
            ? AdminPostRuleset::class
            : CreatePostRuleset::class;
    }
}
bash
composer analyse