【问题标题】:Laravel4+Bootstrap: How to make fields red on validation errorLaravel4+Bootstrap:如何在验证错误时使字段变为红色
【发布时间】:2013-11-24 08:18:58
【问题描述】:

在 Laravel4 + Bootstrap 2.3.1 中,我有一个可以正常使用验证的表单。 必须填写三个字段:姓名 - 电子邮件 - 电话。

如果没有插入任何内容,或者电子邮件的格式不正确,则会显示错误消息。 但除此之外,我想让这些字段变为红色,以更好地显示错误所在。 我如何在 Laravel + Bootstrap 中做到这一点?

这是包含三个必填字段的表单:

<form name="room" method="post"  class="narrow_width">

 <label><span><i class="icon-user"></i></span> Name <span class="color-red">*</span></label>
  {{ Form::text('name',Input::old('name'), array('class' => 'span7 border-radius-none')) }}

  <label><span><i class="icon-envelope-alt"></i></span> Email <span class="color-red">*</span></label>
  {{ Form::text('email',Input::old('email'), array('class' => 'span7 border-radius-none')) }}

  <label><span><i class="icon-phone"></i></span> Phone number <span class="color-red">*</span></label>          
  {{ Form::text('phone',Input::old('phone'), array('class' => 'span7 border-radius-none')) }}  

  <p><button type="submit" name="submit" class="btn-u">Send Message</button></p>
 </form>

非常感谢!

【问题讨论】:

标签: php validation twitter-bootstrap laravel laravel-4


【解决方案1】:

在引导程序中,您可以创建 ID 为“inputError”的错误字段:

<input type="text" class="form-control" id="inputError">

【讨论】:

  • 我不知道这是否是官方推荐的在非常旧版本的 Bootstrap 中执行此操作的方法,但是您只能在 HTML 中的每个文档中使用一次 ID,所以这将如果您有多个错误,则使您的文档无效。
【解决方案2】:

我认为使用 laravel Form 类没有简单的方法来做到这一点。我个人为此使用我自己的包https://github.com/AndreasHeiberg/theme。如果你不想使用它,你可以使用它,但它可能会发生变化。

无论如何,执行此操作的原始代码如下:

<div class="control-group {{ $errors->has($id) ? 'error' : false }}">
    <label for="{{ $id }}" class="control-label">{{ $text }} {{ $required ? '<span class="required-red">*</span>' : ''}}</label>
    <div class="controls">
        <input type="{{ $type }}" id="{{ $id }}" name="{{ $id }}" value="{{ $value }}">
        @if ($helpText)
            <span class='help-inline'>{{ $helpText }}</span>
        @endif
        @foreach($errors->get($id) as $message)
            <span class='help-inline'>{{ $message }}</span>
        @endforeach
    </div>
</div>

这是最重要的部分

<div class="control-group {{ $errors->has($id) ? 'error' : false }}">

您可以将其封装在一个表单宏 http://laravel.com/docs/html#custom-macros 中,使用辅助函数或我的包来执行此操作。

使用我的包,您只需使用:

+@formText('name')

【讨论】:

    【解决方案3】:

    感谢您的努力,尤其是@AndHeiberg。 为简单起见,我决定放弃 Laravel-Bootstrap 验证并改用 jquery 插件:https://github.com/jzaefferer/jquery-validation

    主要原因是它非常易于使用。 调用插件并将“必需”插入标签就足够了。 插件将完成所有其余工作,以红色突出显示该字段并显示该字段的错误消息。

    【讨论】:

      【解决方案4】:

      您可以轻松地使用表单宏,这里有很多可用于 Bootstrap 3:

      http://forums.laravel.io/viewtopic.php?id=11960

      希望这会有所帮助...

      【讨论】:

        【解决方案5】:

        如果您的意图是让错误更明显地显示在哪里,您可以将 Laravel 验证错误返回的消息文本包装在一个跨度中并为其赋予样式。

        {{ $errors->first('email', "<span class='error'>:message</span>")}}
        

        :message 是错误消息的“占位符”。然后您可以根据需要为.error spans 提供任何样式。查看此Laracast lesson 了解更多详情(3:10 之后)。

        【讨论】:

        • 我正在做类似的事情,但它总是 html 解码 &amp;lt;" 而不是输出我想要的实际字符(即它会显示 &amp;lt;&amp;quot; 代替) . Laravel 4.1 在这里
        • 我在 Laravel 5.0 上尝试过,但似乎不起作用。 &lt;span&gt;..&lt;/span 打印为实际字符串。
        • @theGreenCabbage 这个答案对 Laravel 4.2 有效,我不确定它是否适用于 5.0,因为我没有使用过。
        • 这可能对某些人有用...{{ $string }} 将 html 转义以 > 之类结尾的字符串。要阻止 Laravel 转义您的 html,请使用 {!! $string !!}
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多