mercredi 7 juin 2017

Returning a view with previous inputs using Laravel

I have a form, when submitted, invokes an AJAX request. This ajax request performs back-end validation on the inputs. If an error is detected, it displays the error messages. So if the user fills out 30 fields, and one is not valid, I would like to return all those inputs with an error message.

My Laravel Code:

Route::post('/roa', function() {
$m = Request::except('_token');
$name = "form1_sections/" . $m['nextTab'] . "_form";//next view name
$name2 = "form1_sections/" . $m['currentTab'] . "_form";//current view name

$var= parse_str($m['inputs'], $output);//data from ajax is a string

if ($m['currentTab']=='section2'){//i'm only doing validation on one section right now
//to simplify the code.
    $rules = [
        'TB1_course.*' => 'required'
    ];
    $validator=Validator::make($output, $rules);
    if ($validator->passes()){//if no error, return the next view
        return ["view" => view("$name")-> render(), "value"=>1, "inputs"=>$output];
    }
    return ["view" => view("$name2")->withInput($output)->withErrors($validator) -> render(), "value"=>1, "inputs"=>$output];
}
return ["view" => view("$name") -> render()];
});

My Ajax request:

$('#form').on('submit', function (e) {
    var formData = $('#form').serialize();
    e.preventDefault();
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.ajax({
        type: 'POST',
        url: '/roa',
        dataType: 'json',
        data: {inputs: formData, nextTab: relatedTabID, currentTab: tabID}, 
            $('#tabShow').html((data.view));
        },
        error: function () {
            alert('error');
        }
    });
});

I am successfully able to receive all the error messages, but the withInput($output) for some reason is not working. Thank you for all your help.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire