[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Alef Silva
Criador Alef Silva 08/05/2024

Estou tendo problemas em utilizar form requests com API, pois o mesmo funciona quando eu envio um objeto simples, mas quando eu envio um array de objetos, as validações não tem o comportamento esperado. Vou mostrar um exemplo abaixo:

<?php

namespace App\Http\Requests\Api;

use Illuminate\Foundation\Http\FormRequest;

class GroupRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            'group_name'  => ['required', 'unique:groups,group_name'],
            'group_code'  => ['required'],
            'description' => ['required']
        ];
    }
}

Quero testar o funcionamento da regra unique inserindo um registro de já existe no banco, e quando eu envio um objeto simples, funciona corretamente:

{

    "group_name": "Grupo 1",

    "group_code": "GRP1",

    "description": "Grupo de vendas"

}

 

Response

{

"message": "Nome do Grupo já existe (and 1 more error)",

"errors": {

"group_name": [

"Nome do Grupo já existe"

]

}

 

}

Porém quando eu envio um array de objetos, ele não funciona do jeito certo:

[

  {

    "group_name": "Grupo 1",

    "group_code": "GRP1",

    "description": "Grupo de vendas"

  },

  {

    "group_name": "Grupo 2",

    "group_code": "GRP2",

    "description": "Grupo de marketing"

  }

]

Response

{

"message": "Nome do Grupo deve ser preenchido (and 2 more errors)",

"errors": {

"group_name": [

"Nome do Grupo deve ser preenchido"

],

"group_code": [

"Código do Grupo deve ser preenchido"

],

"description": [

"Descrição deve ser preenchido"

]

}

 

}

Inclusive mostra um erro de validação de required como se eu não estivesse preenchendo os campos obrigatórios. O que devo fazer nesse tipo de situação? as vezes o usuário pode acabar querendo mandar um array de objetos tudo de uma vez em uma requisição só.

Manager Carlos Ferreira 08/05/2024

Olá, Alef!

Tudo bem?

 

Vc pode validar arrays, veja como é simples no Laravel, um exemplo real:

https://github.com/especializati/larafood/blob/master/app/Http/Requests/Api/StoreOrder.php#L40

 

Conseguiu entender como funciona?

Carlos Ferreira
Criador Alef Silva 08/05/2024

Não consegui entender muito bem. Seria aquele asterisco que representa uma validação de array de objetos?

Alef Silva
Manager Carlos Ferreira 08/05/2024

Exato, o asterisco é chave de tudo

Carlos Ferreira
Criador Alef Silva 08/05/2024

Obrigado !! vou fazer aqui

Alef Silva
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!