Enviar datos desde un formulario en JS un Controlador de Laravel y hacer un update

танго una página que mediante AJAX usando JS hago una llamada un controlador y le envio los datos del fomulario (esto funciona correctamente, recibo bien los datos en el controlador)

$(".btn-submit").click(function(e){

e.preventDefault();
var codigo_promocion = $("input[name=codigo_promocion]").val();
var descuento = $("input[name=descuento]").val();
var descripcion = $("input[name=descripcion]").val();

$.ajax({

    type:'PUT',
    url:'/api/promociones/' + id_site_promocion ,
    data: {
        codigo_promocion: codigo_promocion,
        descuento : descuento,
        descripcion : descripcion,
    },
    success:function(data){
        $('.btn-submit').prop('disabled', false);
    },
    error:function (data) {
        $('.btn-submit').prop('disabled', false);
    }
});

});

Танго El problema lo en el controlador, hago lo siguiente recibo los datos de la request y intento hacer un update меня esta dando ошибка, en las últimas lineas cuando hace el "обновляет" si por ejemplo el usuario никакой rellena Эль-Кампо descripción luego никакой se envia des del JS al controlador y al intentar hacer, обновляет меня da fallo.

/**
 * Update the specified resource in storage
 *
 * @param  \Illuminate\Http\Request  $request
 * @param $id
 * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
 */
public function update(Request $request, $id)
{

    $promocionExists = Promocion::find($id);

    if (null === $promocionExists) {
        return response('Promocion no válida',404);
    }

    $validator = Validator::make($request->all(), [
        'codigo_promocion' => 'max:255',
        'descuento' => 'max:255',
    ]);

    if ($validator->fails()) {
        return response(['errors' => $validator->messages()->all()],400);
    }


    Promocion::find($id)
        ->update([
            'codigo_promocion' => $request->get('codigo_promocion'),
            'descuento' => $request->get('descuento'),
            'descripcion' => $request->get('descripcion'),
        ]);

    return response('Promoción modificada correctamente',200);

}
0
задан 20.12.2019, 13:56
1 ответ

Я предполагаю, что недостаток, - потому что не существует параметр в request, если это так, ты можешь манипулировать этим таким образом:

if(isset($request->get('descripcion'))){
    'descripcion' => $request->get('descripcion'),
}else{
    'descripcion' => '', // o null
}
1
ответ дан 21.12.2019, 12:12