andersao / andersao/l5-repository
Como validar campos Morph com Validators
- Vorherrschende Sprache
- PHP
- Sterne
- 4.2k
- Forks
- 880
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Minha Stack:
- Laravel 5.5
-> Pacote prettus/l5-repository: 2.6.*
Situação:
Eu tenho as seguintes rotas:
```
Route::resource('pessoas-fisicas', 'PessoasController',[
'except' => ['create', 'edit']
]);
Route::resource('pessoas-fisicas', 'PessoasFisicasController',[
'except' => ['create', 'edit']
]);
Route::resource('pessoas-juridicas', 'PessoasJuridicasController',[
'except' => ['create', 'edit']
]);
```
A rota de pessoas-fisicas possui suas regras de validação, tudo ok, tudo funcionando.
A rota de pessoas-juridicas possui suas regras de validação, tudo ok, tudo funcionando.
Conforme citado, estou utilizando o pacote l5-repository, optei por trabalhar com os Validators do próprio pacote. Minha migration está da seguinte forma:

Objetivo:
Deverá primeiro ser cadastrado o tipo de pessoa, ou seja, primeiro o meu serviço cadastra pessoa_fisica ou pessoa_juridica. Após isso, ele deverá cadastrar a pessoa.
Dúvida:
O problema é que eu tenho está em dois tipos de validação, são eles:
1° Em pessoa_type, eu quero que ele execute uma validation do tipo "in", pegando os valores de uma constante direto do model. Exemplo:
```
'pessoa_type' => [
'required',
Rule::in(Pessoa::TYPE),
],
```
Onde, Pessoa é o meu modelo e a constante TYPE retorna um array com as opções disponíveis.
2° Em pessoa_id, eu quero que ele execute uma validation do tipo "exists", pegando o id informado na request e validando de acordo com o input pessoa_type.
Exemplo:
```
$model = $request['pessoa_type'];
'pessoa_id' => [
'required',
"exists:$model,id"
],
```
Como está meu código hoje:

3° Eu preciso que a Rule::in de pessoa_type rode antes da segunda regra do id, neste caso basta colocar essa regra antes?, que ela será executada e validada antes que a de pessoa_id? (Repare que na imagem anterior isso não ocorre).
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.