Как проверить сообщение JSON с Dingo API в Laravel? - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь проверить json, который я получаю по почте, используя библиотеку Dingo API в Laravel.Кажется, что проверка работает неправильно, когда я отправляю действительный JSON в соответствии с полями, которые я проверяю, и он возвращает мне сообщение:

Поле X обязательно.

Но я 'Я отправляю поле X в json, чего я не понимаю.

JSON:

    [
      {
        "currency_id": 1,
        "bills": [
            {
                "barcode": "99999.9999999.99999999.9999 9",
                "due_date": "2018-09-14",
                "value": 70.00
            },
            {
                "barcode": "8888.888888.88888.8888 8",
                "due_date": "2018-09-15",
                "value": 32.00
            }
        ]
    }
]

Я получаю эту ошибку:

"message": "422 Unprocessable Entity",
"errors": {
    "currency_id": [
        "The currency id field is required."
    ],
    "bills": [
        "The bills field is required."
    ]
},

Это мойПользовательский FormRequest с правилами проверки, где я передаю его в качестве параметра в методе хранения BillController.

namespace App\Http\Requests;

use App\Rules\Sum;
use Dingo\Api\Http\FormRequest;


class BillRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'currency_id' => 'required|integer|exists:currency,id',
            'bills' => ['required', 'array', 'min:1', 'max:3', new Sum],
            'bills.*.barcode' => 'required|string|min:10|max:255',
            'bills.*.due_date' => 'date',
            'bills.*.value' => 'required|numeric|between:10,30000',
        ];
    }


}

1 Ответ

0 голосов
/ 15 сентября 2018

Для решения пришлось поставить *. перед каждым правилом, так как я получаю массив, валидатор понимает только этот путь.

public function rules()
{
    return [
        '*.currency_id' => 'required|integer|exists:currency,id',
        '*.bills' => ['required', 'array', 'min:1', 'max:3', new Sum],
        '*.bills.*.barcode' => 'required|string|min:10|max:255',
        '*.bills.*.due_date' => 'date',
        '*.bills.*.value' => 'required|numeric|between:10,30000',
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...