validator-docs icon indicating copy to clipboard operation
validator-docs copied to clipboard

[DISCUSSÃO] Sugestão de melhoria

Open BaraoVlask opened this issue 1 year ago • 0 comments

Sugiro a refatoração do aquivo ValidatorProvider para ond ele extenda as validações já existentes no laravel sem substituir a resolução da validação (código citado), fazendo isso tambem seria nescessario refetorar as rules, abaixo segue exemplo.

https://github.com/geekcom/validator-docs/blob/19ebbc9452aeb6fd88c6770ca3bc72b4e094263d/src/validator-docs/ValidatorProvider.php#L27-L34

Exemplo de provider

use App\Rules\Base64ImageRule;
use App\Rules\CheckBilletDueDateRule;
use App\Rules\CheckBilletPaymentRule;
use App\Rules\CheckCreditCardInstallmentsRule;
use App\Rules\CheckInstallmentsRule;
use App\Rules\EnumRule;
use Illuminate\Support\ServiceProvider;
use Validator;

class ValidationServiceProvider extends ServiceProvider
{
    protected array $rules = [
        'enum' => EnumRule::class,
        'base64_image' => Base64ImageRule::class,
        'check_installments' => CheckInstallmentsRule::class,
        'billet_value_paid' => CheckBilletPaymentRule::class,
        'billet_due_date' => CheckBilletDueDateRule::class,
        'check_installments_count' => CheckCreditCardInstallmentsRule::class,
    ];

    /**
     * @return void
     */
    public function boot(): void
    {
        $this->registerValidationRules();
    }

    /**
     * @return void
     */
    private function registerValidationRules(): void
    {
        foreach ($this->rules as $alias => $class) {
            if (is_string($alias)) {
                Validator::extend($alias, "$class@passes");
            }
        }
    }
}

Este exemplo tirei de um projeto que fiz

Prós

  • Maior compatibilidade com as versoes do Laravel (pelo menos do meu ponto de vista)
  • Suporte a customização dos attibutes
  • Suporte a customização das mensagens por arquivos de tradução
  • Resolução da issue #133

Contras

  • Trabalho para refatorar (posso ajudar)
  • Possivel perda de retrocompatibilidade (brakingchange)
  • Possiveis erros/problemas que eu ainda não encontrei

BaraoVlask avatar Nov 22 '22 15:11 BaraoVlask