El estado 302 se obtiene cuando se envía el formulario en laravel 5.5.

El estado 302 se obtiene cuando se envía el formulario en laravel 5.5. Después de enviar, la página del formulario se redirige de vuelta

Tengo un formulario y las entradas están dentro del bucle. Cada entrada se valida usando el método de matriz de validación de Laravel. En este momento, tengo el nombre enviado como name="guest[{{ $cart->_id }}][sleeps]" y name="guest[{{ $cart->_id }}][comments]". La validación funciona bien para cada entrada. Pero los datos no se envían a la página del controlador. Después de enviar la página, se redirigirá de vuelta. Recibo http 302 status. He adjuntado el resultado de la consola de Chrome. ¿Cómo podemos enviar datos al controlador cuando envío el formulario?

Si cambio el nombre como name="sleeps[]" y name="comments[]", los datos se publican en el controlador. Cualquier ayuda sería apreciada.

rutas.php

Route::post('/cart/store', 'CartController@store')->name('cart.store');

HTML

<form action="{{ route('cart.store') }}" method="post">

 {{ csrf_field() }}

<div class="panel panel-default text-left panel-booking1 panel-default-booking1">
    @forelse($carts as $key => $cart)
    <div class="col-sm-4 col-sm-4-booking1 form-group {{ $errors->has('guest.*.sleeps') ? ' has-error' : '' }}">
        <label>Sleep(s)</label>

        <select class="form-control form-control-booking1 jsBookCalSleep"  name="guest[{{ $cart->_id }}][sleeps]">
        <option value="">Choose Sleep(s)</option>
        @for($i = 1; $i <= 30; $i++)
           <option value="{{ $i }}" @if($i == $cart->sleeps) selected @endif>{{ $i }}</option>
        @endfor
        </select>

        @if ($errors->has('guest.*.sleeps'))
             <span class="help-block"><strong>{{ $errors->first('guest.*.sleeps') }}</strong></span>
        @endif
    </div> 

    <div class="col-sm-4 col-sm-4-f-booking1 comment-booking1 col-sm-4-booking1">
       <div class="form-group {{ $errors->has($inputComments) ? ' has-error' : '' }}">
         <textarea id="comments_{{ $cart->_id }}" name="guest[{{ $cart->_id }}][comments]" class="form-control" rows="3" maxlength="300" placeholder="Comment...">{{ old($inputComments) }}</textarea>

         @if ($errors->has($inputComments))
           <span class="help-block"><strong>{{ $errors->first($inputComments) }}</strong></span>
         @endif

      </div>
    </div> 

    @empty
      <p>No bookings in your cart</p>
    @endforelse

<div>
<div id="btn-ground-2-booking1">
    <button type="submit" class="btn btn-default-booking1 btn-default btn-sm btn-details btn-details-booking1"><span class="glyphicon glyphicon-credit-card" style="font-size: 14px;" aria-hidden="true"></span> Payment</button>
</div>
</div>
</form>

SolicitudCarrito.php

public function rules()
    {
        return [
            'guest.*.sleeps'     => 'required|not_in:0',
            'guest.*.comments'   => 'max:300',
        ];
    }

ControladorCart.php

public function store(CartRequest $request)
    {
        dd($request->all());
    }

ingrese la descripción de la imagen aquí

Mostrar la mejor respuesta

302 es un código de redirección, no un error.

¿Puede verificar cuál es el resultado de name="guest[{{ $cart->_id }}][comments] en el elemento de inspección?

@Nirali El resultado es guest[5ac5e2e09a892042bb7b2d59][comments]

302 es un código de redirección. Haz algo como esto

Route::post('/cart/store', 'CartController@store')->name('cart.store'); 
Replace the form tag by below line and check it.

<?php echo Form::open(['url' => '/cart/store', 'method' => 'post']); ?>

No estoy enviando el formulario usando el método ajax.

He agregado el resultado de la consola Chrome en mi pregunta

Puedes probar:

public function rules()
{
    $rules = [
        'guest' => 'array'
    ];
    foreach($this->request->get('guest') as $key => $val){
        $rules['guest.'.$key.'. sleeps'] = 'required|not_in:0';
        $rules['guest.'.$key.'. comments'] = 'max:300';
    }
    return $rules;
}

Espero que te ayude.

Gracias. Me ayudó parcialmente. Si elimino la primera regla ($rules['guest.'.$key.'. sleeps'] = 'required|not_in:0';) los datos se envían al controlador. Aquí está el resultado array:2 [▼ "_token" => "N7J9k5KMbv3WvU0OuKR6ZmDjm1D1udbemKKA5RLJ" "guest" => array:2 [▼ "5acb27dd9a892042bb7b2d5c" => array:4 [▼ "beds" => "2" "dormitory" => null "dormir_lugar" => "0" "comentarios" => "prueba" ] "5acb280a9a89205a311248f3" => array:3 [▼ "dormir" => "1" "dormir_lugar" => "1" "comentarios" => " probado" ] ] ]

El problema se debe a las reglas de espacio en blanco y negro 'guest.'.$key.'. sleeps'. Ahora está funcionando bien. Gracias