¿Cómo manejar los valores incorrectos insertados desde el código fuent

¿Cómo manejar los valores incorrectos insertados desde el código fuente?

Hay una página donde el usuario selecciona las cantidades que quiere para cada tipo de ticket, luego el usuario hace clic en siguiente y va a una página que muestra un resumen de la solicitud.

En esta página donde el usuario selecciona las cantidades, para cada tipo de entrada hay unas cantidades mínimas y máximas que el usuario puede seleccionar, por ejemplo para el tipo de entrada "banco central" el usuario puede seleccionar un máximo de entradas y para la entrada tipo "banco lateral" un máximo de 3.

¿Sabe cómo corregir este problema?: si el usuario en esta página de cantidades seleccionadas, cambie la cantidad en el código fuente a, por ejemplo, "1000000" para el tipo de entrada "banco central" y haga clic en "Siguiente" el dd($request->all()); muestra:

array:2 [▼
  "_token" => ""
  "type" => array:2 [▼
    "center bench" => "1000000"
    "lateral bench" => "1"
  ]

Entonces, el controlador recibirá "banco central" => "100000", y esto es incorrecto.

¿Sabes cómo manejar esto?

Código:

Entonces, en la primera página hay este código para que el usuario seleccione las cantidades para cada tipo de boleto:

<ul>
    @foreach($tickets as $ticket)
        <li>
            <span>{{$ticket->title}}</span> 
            <form method="post" action="{{route('congress.registration', ['id' => $congress->id, 'slug' => $congress->slug])}}">

                <select name=type[{{ $ticket->title }}]>
                    <option selected>0</option>
                    ...
                </select>
            </form>
            <span>X {{$ticket->showPrice()}}</span>
        </li>
    @endforeach
    <li>
        <span>TOTAL</span>
        <span>0.00€</span>
    </li>
    <input type="submit" value="Next"/>
    </form>
</ul>

Cuando hago clic en el botón "Siguiente", obtengo las cantidades seleccionadas para el usuario en una matriz y vuelvo a la página de registro usando el método storeQuantity():

class RegistrationController extends Controller
{
    public function storeTypes(Request $request){
         dd($request->all());
        $selectedTypes = $request->type;
        return view('congresses.registration')->with('selectedTypes', $selectedTtypes);
    }
}
Mostrar la mejor respuesta

agregue un validador de JavaScript en su plantilla Blade

Podrías controlar el valor que el usuario puede poner en el formulario con un validador de javascript (como parsleyjs), pero usted debe validar los datos en el backend siempre, nosotros nunca, nunca, confiamos en el usuario.

Es por eso que Laravel tiene una muy buena manera de validar los datos entrantes en su controlador, puede encontrar allí cómo validar los datos entrantes de la aplicación.

Mirando eso, puedes hacer algo como:

class RegistrationController extends Controller
{
    public function storeTypes(Request $request){
        $validatedData = $request->validate([
           'type.center bench' => 'required|max:100',
           //add there more validation rules...
        ]);

        $selectedTypes = $request->type;
        return view('congresses.registration')->with('selectedTypes', $selectedTtypes);
    }
}

Si la validación falla, se redirigirá a la vista con un objeto MessageBag que contiene todos los errores de validación.