dimanche 20 août 2017

How to store dynamically generated form input field and its data in database

This is how html field is stor in database using ajax.The problem is when I print these form fields from database, don't know how to print value of these fields because form fields are stor as html in database.I need to print the value of dynamically generated form input field for update.

     $("#save_field").on('submit',function (e) {
                var field = {};
                var options = [];
                $.each($(this).serializeArray(), function (i, f) {
                    field[f.name] = f.value;
                    if("options" == f.name.slice(0,7)){
                        options.push(f.value);
                    }
                });
                switch(field['type']){
                    case 'text':

                         element = '<div class="form-group">'+
                                '<label class="col-md-3 control-label">'+field['label']+'</label>'+
                                '<div class="col-md-6">'+
                                '<input type="text"  name="custom_text[]" value="'+ field['default_value'] +'" class="form-control" placeholder="">'+
                                '</div>'+
                                '<input type="hidden" name="type" value="text">'+
                                '</div>';
                        break;
                    case 'select':
                         element =
                                '<div class="form-group">'+
                                '<label class="col-md-3 control-label">'+field['label']+'</label>'+
                                '<div class="col-md-6">'+
                                '<select id="custom_select" class="bs-select form-control" name="custom_select[]">';

                                for(index = 0; options.length - 1 > index; index += 2) {

                                    element = element.concat('<option value="'+ options[index+1] +'">'+ options[index] +'</option>');

                                };
                               var x = '</select>'+
                                '</div>'+
                                '<input type="hidden" name="type" value="select">'+
                                '</div>';
                        element = element.concat(x);
                        break;
                    case 'date':
                        element =
                            '<div class="form-group">'+
                                '<label class="control-label col-md-3">'+field['label']+'</label>'+
                                '<div class="col-md-6">'+
                                    '<div class="input-group input-large date date-picker" data-date-format="dd-mm-yyyy" >'+
                                        '<input type="text" class="form-control" name="custom_date[]" readonly>'+
                                            '<span class="input-group-btn">'+
                                                '<button class="btn default" type="button">'+
                                                    '<i class="fa fa-calendar"></i>'+
                                                '</button>'+
                                            '</span>'+
                                    '</div>'+
                                '</div>'+
                            '<input type="hidden" name="type" value="date">'+
                            '</div>';
                    break;
                }

                values = $(this).serialize();
                values += "&element=" + encodeURIComponent(element);
                var request = $.ajax({
                    url: "store_domain_custom_field",
                    method: "POST",
                    data:values,
                });

                request.done(function(data) {
//                    field = JSON.parse(data);
                    $("#responsive").modal('hide');
                    $('#save_field')[0].reset();
                    $("#custom").fadeOut(800, function(){
                        $("#custom").append(element).fadeIn().delay(1000);
                    });
//                    location.reload();
                });

                request.fail(function(jqXHR, textStatus) {
                });
                e.preventDefault();
            });

This how store fields are printed after storing in database.

<div id="custom">
   @if(isset($fields) && !empty($fields))
       @foreach($fields as $field)
            {!! html_entity_decode($field->element) !!}
       @endforeach
   @endif
</div>

This function store form fields in database I am using laravel frame work

public function storeDomainCustomField(Request $request){

        if ($request->isMethod('post') && $request->has('process_domain_id')) {

            $field = new InputField();
            $field->label = $request->label;
            $field->table_name = 'process_domain';
            $field->refrence_id = $request->process_domain_id;
            $field->type = $request->type;
            $field->tool_tip = $request->tool_tip;
            $field->default_value = $request->default_value;
            $field->element = $request->element;
            $select_options = array();
            $options_values = array();
            if($request->has('options') && $request->type == 'select'){

                foreach($request->options as $option){

                    $select_options[] = $option['opt'];
                    $options_values[] = $option['val'];
                }

                $field->options = implode(',' ,$select_options);
                $field->option_values = implode(',' ,$options_values);
            }

            if($field->save()){

                return response(json_encode($field->toArray()), 200)->header('Content-Type', 'text/plain');
            }

            return response('error', 500)->header('Content-Type', 'text/plain');

        }


    }



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2xfGvs9
via IFTTT

Aucun commentaire:

Enregistrer un commentaire