使用Laravel返回先前输入的视图

时间:2017-06-07 17:37:47

标签: ajax laravel laravel-5

我有一个表单,在提交时,会调用一个AJAX请求。此ajax请求对输入执行后端验证。如果检测到错误,则显示错误消息。 因此,如果用户填写了30个字段,而其中一个字段无效,我希望返回所有这些输入并显示错误消息。

我的Laravel代码:

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()];
});

我的Ajax请求:

$('#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},
        success: function(data){
            $('#tabShow').html((data.view));
        },
        error: function () {
            alert('error');
        }
    });
});

我成功地能够收到所有错误消息,但由于某种原因,withInput($ output)无法正常工作。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

'view' => view('template')->withInput()