0

当 _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 字段有关时,突出显示电子邮件字段看起来很奇怪。

据我从这个stackoverflow问题中可以理解,我可能会做类似的事情

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

这将起作用,但问题是我正在运行一个多语言站点,因此返回的 :message 将成为许多可能性之一。

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

干杯!

4

2 回答 2

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。

于 2014-09-29T07:20:04.593 回答
-2

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

 $messages = $validator->messages();
     echo '<ul>';
     foreach ($messages->all() as $message)
        {
            echo '<li>'.$message.'</li>';
        }
     echo '</ul>';
于 2013-12-12T09:59:47.007 回答