Saltar al contenido

La validación de precios de Laravel solo acepta números positivos y no solo 0

Esta es la solución más exacta que te podemos compartir, pero primero obsérvala pausadamente y analiza si es compatible a tu trabajo.

Solución:

Puede formatear la entrada antes de enviarla al validador en su Request clase.

   public function formatInput()

  $input = array_map('trim', $this->all());

  $input['price'] = (int)($input['price']);
  $this->replace($input);
  return $this->all();

Entonces puedes usar

'price' => 'required|integer|min:0',

Espero que esto ayude

Si no está seguro acerca de la regla “entero”, puede usar la validación de expresiones regulares de la siguiente manera:

'price' => 'required|regex:^[1-9][0-9]+|not_in:0',

Tuve un problema al igual que tú, y desde entonces siempre utilicé la validación de expresiones regulares para este tipo de requisitos. Además, le permite recuperar la misma expresión regular si desea realizar una validación frontal con js.

Aquí está la función laravel que permite validar enteros:

public function validateInteger($attribute, $value)

    return filter_var($value, FILTER_VALIDATE_INT) !== false;

Entonces, es el propio PHP el que está preocupado por este comportamiento. PHP nos dice esto sobre FILTER_VALIDATE_INT:

Valida el valor como un número entero, opcionalmente del rango especificado, y lo convierte a int en caso de éxito.

PHP no establece ninguna otra información sobre el valor “0”, pero se sabe que esta función no considera los números que comienzan con “0”.

Esto funciona para mí:

'price' => 'required|numeric|gt:0',

Si para ti ha sido de ayuda este artículo, sería de mucha ayuda si lo compartes con el resto seniors así nos ayudas a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *