[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Thiago Petherson
Criador Thiago Petherson 05/04/2023

Olá.

Hoje em dia essa ainda é a melhor abordagem para esse tipo de validação ?

Manager Carlos Ferreira 05/04/2023

Olá, Thiago!
Como vai?

É sim, sempre trabalhar com Form Request, e se a validação for muito personalizada, criar um custom validator, igual criamos.

Qualquer dúvida amigo, me retorna. Beleza?

Carlos Ferreira
Criador Thiago Petherson 05/04/2023

A minha dúvida era mais em relação ao custom validator. 

Gostaria de saber se hoje em dia não dá pra fazer isso de forma mais fácil, dentro do form request mesmo, por exemplo...

Thiago Petherson
Manager Carlos Ferreira 05/04/2023

Não, como é algo muito especifico, realmente precisa criar uma rule personalizada! :-)

Carlos Ferreira
Thelmo Henrique de Sousa Severo 05/04/2023

Minha implementação ficou assim:

 

class TenantUnique implements ValidationRule
{
    private $table, $column, $columnValue;

    public function __construct($table, $column = null, $columnValue = null)
    {
        $this->table = $table;
        $this->column = $column;
        $this->columnValue = $columnValue;
    }
    /**
     * Run the validation rule.
     *
     * @param  \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString  $fail
     */
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        
        $tenant = app(ManagerTenant::class)->getTenantIdentify();

        $result = DB::table($this->table)
                    ->where($attribute, $value)
                    ->where('tenant_id', $tenant)
                    ->first();

        if (!is_null($result) && $result->{$this->column} != $this->columnValue) {
            $fail('O valor do '.$attribute.' já está em uso.');
        }
    }
}

Thelmo Henrique de Sousa Severo
Manager Carlos Ferreira 05/04/2023

Muito bom, parabéns!!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!