Bienvenido a la sección de Preguntas y Respuestas, donde puedes plantear tus dudas e inquietudes técnicas y recibir respuestas de otros miembros de la comunidad. Si deseas consultar el foro anterior puedes hacerlo a través del enlace: Foro Anterior (Solo Lectura)

Jeditable con Laravel

0 positivos 0 negativos
2 vistas
Hola comunidad, espero que estén bien, soy nuevo aquí y vine en su ayuda, estoy usando un plugin jquery con Laravel llamado Jeditable https://appelsiini.net/projects/jeditable/ Quería saber si alguien aquí tiene experiencia en este pluging y tengo unas horas, tratando de resolver un problema y lo que estoy buscando es una orientación.

Resulta que estoy enviando un archivo de Excel a una tabla editable en línea, la idea es que al cargar el archivo de Excel, puede modificar los datos en la tabla en función de algunas reglas, después de revisar las reglas si todo está bien, entonces, puede guardar en la base de datos.

Escribo un poco del código que tengo para que pueda hacerse una idea:

This is my view:

[code]
<div class="container-fluid">
        <div class="row">
            <div class="col">
                <div class="panel panel-default">
                    <div class="panel-heading"><h4>Registro de encargos</h4></div>
                    <div class="panel-body">
                        @include('mensajes.validation')
                        {!! Form::open(['id'=>'formularioajax','method'=>'POST','class'=>'','enctype'=>'multipart/form-data']) !!}
                        @include('encargos.subirfichero.partials.fields')
                        {!! Form::submit('Procesar Fichero',['id'=>'procesar_fichero','class'=>'btn btn-primary']) !!}
                        {!! Form::close() !!}
                        <br>
                        @include('mensajes.progressbar')
                        <br>

                        <div id="datatable"></div>
                    </div>
                    <br>

                </div>

            </div>

        </div>
    </div>
[/code]

This is my Js archive,

[code]
$(document).ready(function(){

    var oTable = $('#example').DataTable({
            "paging":   true,
            "ordering": true,
            "info":     true,
            "searching": true,
            "language": {
                "search": "Buscar",
                "lengthMenu": "Ver _MENU_ registros por pagina",
                "zeroRecords": "Registro no encontrado - Intente de nuevo",
                "info": "Cantidad de paginas _PAGE_ de _PAGES_",
                "infoEmpty": "No existe registros disponibles",
                "infoFiltered": "(Filtrar desde _MAX_ registros en total)",
                "paginate": {
                    "first": "Primera",
                    "last": "Ultima",
                    "next": "Siguiente",
                    "previous": "Anterior"
                }
            }

    } );
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    /* Apply the jEditable handlers to the table */

    $('.edit').editable('editable',{

        callback : function(value, settings) {
           console.log(this);
           console.log(value);
           console.log(settings);
           
        }

    });

});
[/code]

This is my route archive

[code]
    Route::group(['prefix'=>'encargos','namespace'=>'\Encargos'],function(){
    Route::post('editable','EncargoController@editable');
  });
[/code]

This is my controller:

[code]

    public function editable(Request $request)
    {
        $nombre = $request->id;
        switch ($nombre) {
            case "albaran":
                $data = $request->all();
                $rules = array(
                    'value' => 'required|max:10|string'
                );
                $messages = array(
                    'value.required' => 'El campo no puede ser blanco',
                    'value.max' => 'El valor maximo es 10 caracteres',
                    'value.string' => 'El valor debe ser caracteres'
                );
                $v = Validator::make($data, $rules, $messages);
                if ($v->fails()) {
                    return response()->json([
                        'errores' => $v->errors(),
                        'valores' => $request->value
                    ]);
                } else {
                    return $request->value;
                }
                break;

      
        };
}
[/code]

Bien hay mas codigo pero aqui es donde esta el problema en lo que acabo de publicar, como ya entederan tengo un formulario basico que sube un archivo excel al servidor, el archivo es validado y luego descargado a un datatable, si vieron el archivo JS de abajo alli es donde uso el plugin Jeditable. El Jeditable tiene una ruta, se llama "editable" y si ya vieron en el controlador abajo tengo a la funcion editable.

Que es lo que hago alli? como jeditable envia todo usando ajax al servidor recibo la informacion alli en el controlador y lo que hago es que dependiendo del campo de la tabla que reciba lo someto a una validacion.

Por favor fijence solo en el caso: "albaran" ya que los demas casos no tiene la variable de retorno valores, ya que estoy probando con una para entender despues las otras. Si pueden observar cuando la validacion falla hago un return response->json y envio "errores" y "valores" que "valores" es el resultado del campo que ocasiono el error.

En la tabla que puedo ver? pues cuando la validacion falla puedo ver el error y el valor del campo que ocasiono el error pero lo veo en formato json ejemplo:
{"errores":{"value":["El valor maximo es 10 caracteres"]},"valores":"0703090057AaA"}

Pero yo no quiero ver esto en formato json, yo quiero manipular ese json, obtener a "errores" y "valores" para poder utilizarlos a mi antojo pero no puedo, no puedo manipular el json, bueno...no logro manipularlo realmente.

Podrian ayudarme?
preguntado por cyberjos (12 puntos) Oct 30 en Frameworks

Por favor inicie sesión o regístrese para responder a esta pregunta.

...