AdultBirthDate.php 584 B

12345678910111213141516171819202122232425
  1. <?php
  2. namespace App\Rules;
  3. use Carbon\Carbon;
  4. use Closure;
  5. use Illuminate\Contracts\Validation\ValidationRule;
  6. use Throwable;
  7. class AdultBirthDate implements ValidationRule
  8. {
  9. public function validate(string $attribute, mixed $value, Closure $fail): void
  10. {
  11. try {
  12. $isAdult = Carbon::parse($value)->age >= 18;
  13. } catch (Throwable) {
  14. // A regra `date` é responsável pela mensagem de data inválida.
  15. return;
  16. }
  17. if (!$isAdult) {
  18. $fail(__('validation.responsible_must_be_adult'));
  19. }
  20. }
  21. }