@lexstile

Как на laravel проверить, что тебе пришло null?

Как проверить, чтобы поле должно быть и должно равняться null?
Если null - идем дальше, если нет - ошибка.
Как я понял, nullable не решает проблему.

class OrderDisheReverseRequest extends FormRequest
{
    public function authorize()
    {
        return $this->order->canUpdate('reverse');
    }

    public function rules()
    {
        return [
            # заказ не должен быть ранее возвращен (paid_back_at === null)
            'b2p_id' => ['required', 'integer', 'min:1'],
            'paid_at' => ['required', 'date', 'after:-3 day'],
            'paid_back_at' => ['nullable'],
        ];
    }

    protected function prepareForValidation()
    {
        $this->merge([
            'b2p_id' => $this->order->b2p_id,
            'paid_at' => $this->order->paid_at,
            'paid_back_at' => $this->order->paid_back_at,
        ]);
    }

    public function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(response()->json([
            'success' => false,
            'errors' => $validator->errors(),
        ])->setStatusCode(400));
    }

    public function failedAuthorization() {
        throw new HttpResponseException(response()->json([
            'success' => false,
            'message' => ResponseHelper::error(__('orders.messages.update.denied')),
        ])->setStatusCode(403));
    }
}
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
'paid_back_at' => [
    function (string $attribute, mixed $value, Closure $fail) {
        if ($value !== null) {
            $fail("The {$attribute} is invalid.");
        }
    },
],
https://laravel.com/docs/10.x/validation#using-closures
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы