【问题标题】:Laravel - highlighting the confirmation field for an errorLaravel - 突出显示错误的确认字段
【发布时间】:2013-08-03 09:58:40
【问题描述】:

当 _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' : ''}}

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

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

干杯!

【问题讨论】:

标签: validation laravel laravel-3


【解决方案1】:

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

<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。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,我们决定在注册表的顶部通知有错误,但我的设计师反对所有错误的完整列表,并且想要内联错误。这不是什么大问题(事实上我完全忘记了我问过这个问题!)
    • 好的:D 如果您愿意,您仍然可以批准我的回答为已接受:D
    • @aimiliano 你没有回答这个问题。你的回答与提问者的问题完全相反。他们希望它与表单字段内联,而不是作为列表。
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多