Laravel - 突出显示错误的确认字段

时间:2013-08-02 07:56:50

标签: validation laravel laravel-3

当_confirmation字段不正确时,我无法找到让Laravel突出显示正确字段的方法。

使用Bootstrap布局我的表单中有一个email和email_confirmation字段,如下所示:

<div class="control-group {{$errors->has('email') ? 'error' : ''}}">
    {{ Form::label('email', 'Email', array('class' => 'control-label'))}}
    <div class="controls">
        {{ Form::email('email', Input::old('email'));}}
        {{ $errors->first('email', Form::block_help(':message')) }}
    </div>
</div>
<div class="control-group {{$errors->has('email_confirmation') ? 'error' : ''}}">
    {{ Form::label('email_confirmation', 'Confirm Email', array('class' => 'control-label'))}}
    <div class="controls">
        {{ Form::email('email_confirmation', Input::old('email_confirmation'));}}
        {{ $errors->first('email_confirmation', Form::block_help(':message')) }}
    </div>
</div>

因此,如果用户输入的电子邮件地址无效,则“电子邮件”字段会附加错误,并且正确的标签/字段将突出显示。

但是,如果用户在第一个字段中输入了有效/正确的电子邮件地址但确认错误,则返回的错误仍然是“电子邮件”字段,而不是email_confirmed字段。

对我而言,如果错误实际上是在email_confirmation字段中突出显示电子邮件字段,那么看起来很奇怪。

据我所知this stackoverflow question,我可能会做类似

的事情
{{$errors->first('email', ':message') == 'Please confirm your email address correctly.' ? 'error' : ''}}

这样可行,但问题是我正在运行一个多语言网站,因此:返回的消息将成为众多可能之一。

我想我可以编写一个函数来比较:消息与每种语言的消息数组,但我想我会检查是否有更简单的方法去处理它。

干杯!

2 个答案:

答案 0 :(得分:2)

如果标题字段为空,这就是我显示内联错误的方式:

<div class="form-group @if ($errors->has('title')) has-error @endif">
    {{ Form::label('title', 'Title') }}
    {{ Form::text('title', null, array('class' => 'form-control')) }}
    @if ($errors->has('title')) <p class="help-block">{{ $errors->first('title') }}</p> @endif
</div>

我的验证规则:

public static $rules = array(
    'title' => 'required',
);

使用Laravel 4和Bootstrap 3。

答案 1 :(得分:-2)

或者您可以在某处打印所有错误消息

 $messages = $validator->messages();
     echo '<ul>';
     foreach ($messages->all() as $message)
        {
            echo '<li>'.$message.'</li>';
        }
     echo '</ul>';