-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enviar ID no RULE_UPDATE #18
Comments
Digamos que você tem camada de serviço em sua aplicação.
Agora em seu validator
Feito isso, as regras de unique para o update do mesmo id será permitida. Espero ter ajudado. Abraços |
Desculpe a minha ignorância mas o $id não serve para excluir tal registro da verificação quando em update ? Nao deveria ser assim: Mesmo fazendo dá o erro Constant expression contains invalid operations |
@ecmattos nesse caso não, utilizando o método que passe acima, funcionará perfeitamente. A biblioteca do prettus/validator, basta vc setar $id em sua classe de validação, ela entende que deve-se permitir o mesmo nome por exemplo, se for o mesmo id(proprio registro) quando é atualizado. abraços |
@brunoneve FatalErrorException in BaseRepository.php line 491: Segue abaixo os meus codigos: ClientTypeService.php repository = $repository; $this->validator = $validator; } public function create(array $data) { $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_CREATE); return $this->repository->create($data); } public function update($id, array $data) { $this->validator->setId($id); //funcao q set id para regra do update $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_UPDATE); return $this->repository->update($data, $id); } ``` } ClientTypeValidator.php 'Código', # 'description' => 'Descrição' #]; protected $rules = [ ValidatorInterface::RULE_CREATE => [ 'code' => 'required|max:3|unique:client_types,code', 'description' => 'required|max:30|unique:client_types,description' ], ValidatorInterface::RULE_UPDATE => [ 'code' => 'required|max:3|unique:client_types,code', 'description' => 'required|max:30|unique:client_types,description' ] ]; #protected $messages = [ # 'required' => ':attribute >> Preenchimento obrigatório.', # 'max' => ':attribute >> MÁXIMO :max caracteres.', # 'unique' => ':attribute >> Indisponível.' #]; public function setId($id) { $this->id = $id; } ``` } |
O meu controller (ClientTypeController.php) public function update(Request $request, $id)
|
Esse erro ocorre, durante o create ou update ? |
@brunoneve |
Tenta assim Controller
Service
Fiz algumas alterações, veja se resolve. |
Oi! Ainda aparece o erro FatalErrorException in BaseRepository.php line 491: Meu controlador: use Illuminate\Http\Request; #use L52\Http\Requests; |
A acao update deixei iagual ao que tu me enviaste: public function update(Request $request, $id)
|
@ecmattos editei meu poste, olhe novamente, tirei o validatorException do controller e joguei no service. |
Segue abaixo uma outra sugestao que recebi de um forum mas não consegui também e nao achei muito legal. O que achas ? Olá Eduardo, no seu caso, precisaremos do $request para pegar o id que vem da rota, ou pode vim do formulário também. Então podemos adicionar um método construtor no validator e passar o request. Exemplo: public function __construct(Factory $validator, Request $request) |
Agora a mensagem mudou para: ValidatorException in AbstractValidator.php line 109: O meu controller está assim: namespace L52\Http\Controllers; use Illuminate\Http\Request; #use L52\Http\Requests; No meu service, assim: |
@brunoneve |
@brunoneve |
Seu prettus está atualizado ? eu uso "prettus/l5-repository": "^2.5", Ok, mande o link do repository |
@brunoneve |
@ecmattos ok, quando subir para o git, me avise. Meu skype bnneves |
https://github.com/ecmattos/L52.git Vá em menu Administracao > Clientes > Tipos usuario: [email protected] |
@brunoneve |
rsrsrs |
Mandei PR la, depois olha, fiz os testes e estão funcionando agora. So precisa adaptar para exibir os erros em suas views. Abraços |
O que é PR ? |
@ecmattos Pull Request, |
ok estou vendo agora mesmo. |
Basta aceitar e dar um merge, q vai atualizar pra vc, depois faz um git pull em seu pc. |
Oi ! Mas ao alterar o registro forcando a uma duplicacao de informacao, dá o erro: ValidatorException in AbstractValidator.php line 109: |
tá quase ! |
Tem alguma coisa a ver com Custom validation message not coming #10 ? |
@brunoneve use Illuminate\Support\Facades\Response; Só que agora nao aparece mais as mensagens de erros, submete os dados duplicados mas realiza as alteracoes. |
@brunoneve |
@brunoneve Segue o meu repositorio: https://github.com/ecmattos/L52.git |
@brunoneve Obrigado !! Solucionou o problema |
Hi, I would be grateful if someone share the solution as I am having the same problem. Thanks |
You need to say what id should be allowed in the update. Example:
Your validator
|
Como faço para enviar o ID do meu objeto, para fazer a validação do mesmo?
Algo do tipo:
The text was updated successfully, but these errors were encountered: