forked from eatvio/eatvio-infra
28 lines
573 B
PHP
28 lines
573 B
PHP
<?php
|
|
|
|
namespace App\Rules;
|
|
|
|
use Illuminate\Contracts\Validation\Rule;
|
|
|
|
class MinWords implements Rule
|
|
{
|
|
protected int $minWords;
|
|
|
|
public function __construct(int $minWords)
|
|
{
|
|
$this->minWords = $minWords;
|
|
}
|
|
|
|
public function passes(mixed $attribute, mixed $value): bool|int
|
|
{
|
|
$wordCount = count(preg_split('/\W+/u', $value, -1, PREG_SPLIT_NO_EMPTY));
|
|
|
|
return $wordCount >= $this->minWords;
|
|
}
|
|
|
|
public function message(): string
|
|
{
|
|
return "The :attribute must have at least {$this->minWords} words.";
|
|
}
|
|
}
|