Laravel如何将验证错误传递回远程模态窗口

时间:2014-12-29 04:23:39

标签: ajax laravel bootstrap-dialog

验证后,我的模态中丢失了Session / messagebag $错误数据。我想这是因为我正在从链接中将我的编辑表单参加者/编辑加载到模态正文中,因此$ error数据被发送到调用模态而不是模态正文的页面。当我关闭模态并让它直接加载页面参加者/编辑时,验证错误显示正常。有没有办法将我的$ error变量传递给模态体中显示的编辑表单?

我更喜欢使用AJAX,因为在我目前的实现中,我需要重新加载模态,以便弹出/输出。但我不知道如何将$ error messagebag对象从编辑表单/会话数据传输到模式。我想知道是否有办法使用此方法stackoverflow.com/questions/25103743/laravel-4-validation-in-bootstrap-modal填写$ error messagebag。

主视图

    <td>{{link_to_route('attendee.edit','',array($attendee->id), array(
            'class'=>'edit-attendee btn btn-info btn-xs glyphicon glyphicon-pencil',
            'data-title' => 'Edit Attendee'))}} 
    </td>

JQuery调用BootstrapDialog

$(document).ready(function(){
    $('.btn.edit-attendee').click(function(e){
        e.preventDefault();
        url = $(this).attr('href');
        BootstrapDialog.show({
            title: $(this).data('title'),
            message: $('<div></div>').load(url),
            buttons: [{
                label: 'Update',
                action: function(dialogRef) {
                    $('form').submit();
                }
            }]
        });
    });
});

与会者/编辑视图

{{ Form::model($attendee, array('class'=>'form-horizontal', 'method' => 'PATCH', 'route' => array('attendee.update', $attendee->id))) }}
        <div class="form-group {{{ $errors->has('first_name') ? 'has-error' : '' }}}">
            <label class="col-xs-3 control-label", for="first_name">First Name</label>
            <div class="col-xs-9">
                {{ Form::text('first_name', null , array('class' => 'form-control')) }}
            </div>
          {{ $errors->first('first_name', '<span class="help-inline">:message</span>')}}
        </div>

      <div class="form-group {{{ $errors->has('special_care') ? 'has-error' : '' }}}">
            <label class="col-xs-3 control-label", for="special_care">Special Care</label>
            <div class="col-xs-9">
                {{ Form::text('special_care', null , array('class' => 'form-control')) }}
            </div>
            {{ $errors->first('age', '<span class="help-inline">:message</span>')}}
        </div>
        {{Form::submit()}}
{{ Form::close() }}

控制器

    public function update($id)
    {
        $attendee = Attendee::findOrFail($id);



  $validator = Validator::make($data = Input::all(), Attendee::$rules);

    if ($validator->fails())
    {
        return Redirect::back()->withErrors($validator)->withInput();
    }

    $attendee->update($data);

    return Redirect::route('attendees.index');
}

在我编辑表单后,我想返回到模态窗口以显示验证错误,但$ errors不会传递给模态。

1 个答案:

答案 0 :(得分:1)

命名错误包

如果您在一个页面上有多个表单,您可能希望命名MessageBag个错误。这将允许您检索特定表单的错误消息。只需将名称作为第二个参数传递给withErrors

return Redirect::back()->withErrors($validator, 'update')->withInput();

然后,您可以从MessageBag变量访问指定的$errors实例:

<?php echo $errors->update->first('fieldName'); ?>