Laravel 5 验证 - 表单元素上的错误类

Posted

技术标签:

【中文标题】Laravel 5 验证 - 表单元素上的错误类【英文标题】:Laravel 5 Validation - error class on form elements 【发布时间】:2016-02-05 22:28:18 【问题描述】:

我的验证表单工作正常,看起来像这样:

!! Form::email('email', null, array('placeholder' => 'Email', 'class' => 'form-control ')) !!
$errors->first('email')

如果邮件不好,我会收到这个错误:邮件已经被占用了。

问题是我不想像error那样在输入上放置一个css类,以便为输入添加红色背景边框。

我该怎么做?

【问题讨论】:

enter link description here***.com/questions/39637788/… 【参考方案1】:

添加自定义错误信息

'custom' => array(
    'email' => array(
        'required' => 'We need to know your e-mail address!',
    ),
),

Custom Error Messages in Laravel

【讨论】:

我不需要自定义错误消息。我需要一个 css 类添加到我的输入中。【参考方案2】:

您可以在其周围添加 html 并根据需要设置样式。

HTML:

<span class="error">$errors->first('email')</span>

CSS:

.error 
    border: 1px solid red;

编辑:将has-error 类添加到输入本身,如下所示:

!! Form::email('email', null, array('placeholder' => 'Email', 'class' => 'form-control ' . $errors->first('email', 'has-error'))) !!

【讨论】:

我不需要创建新元素。我需要一个 CSS 类添加到我的电子邮件输入中。 有一个非常简单的解决方案。 :) 检查我的编辑。【参考方案3】:

像这样将类 has-error 添加到您的表单中

!! Form::email('email', null, array('placeholder' => 'Email', 'class' => 'form-control has-error')) !!

如果有错误可以使用if条件,设置类

@if($errors->has('email'))
    !! Form::email('email', null, array('placeholder' => 'Email', 'class' => 'form-control has-error')) !!
@else
    !! Form::email('email', null, array('placeholder' => 'Email', 'class' => 'form-control')) !!
@endif

或者你可以这样做

<input class="form-control  $errors->has('email') ? 'has-error' : '' " name="email" placeholder="Email">

【讨论】:

只有在表单验证失败时才会出现该类,而不是总是像您所建议的那样。【参考方案4】:

您可以使用 if 条件来检查错误:

 <div class="form-group  $errors->has('email') ? 'has-error' :'' ">
   !! Form::text('email',null,['class'=>'form-control','placeholder'=>'Email Address']) !!
   !! $errors->first('email','<span class="help-block">:message</span>') !!
</div>

【讨论】:

【参考方案5】:
<script> 
  if($errors->has('email'))
    $(input[type="email"]).css('border-color', 'red');
  
</script>

【讨论】:

【参考方案6】:

这对我来说是正确的答案,没有使用额外的div's

!! Form::email('email', null, $attributes = $errors->has('email') ? array('placeholder' => 'Email', 'class' => 'form-control has-error') : array('placeholder' => 'Email', 'class' => 'form-control')) !! 
$errors->first('email')

【讨论】:

这个问题是输入在 Bootstrap 中没有 .has-error 类。这需要从父 div 应用。否则,这是一个很好的解决方案。【参考方案7】:

您可以使用以下代码检查电子邮件字段是否有任何验证错误

 <div class="form-group has-feedback @if($errors->has('email') has-error @endif">
        <input name="email" class="form-control"/>
        <span class="glyphicon glyphicon-user form-control-feedback"></span>
        @if ($errors->has('email')) <p class="help-block"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
             $errors->first('email') </p>
        @endif
    </div>

【讨论】:

当您尝试实现主题/样式形式时的有用答案。请注意第一个 div 类中的语法错误; if 语句括号 ) 丢失

以上是关于Laravel 5 验证 - 表单元素上的错误类的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 未显示表单验证错误 [重复]

在 laravel 5.4 + vueJS 中处理表单验证错误

带有验证和存储 Jquery 的 Laravel 表单添加 html 元素

Laravel 5.5 - 同时验证多个表单请求

即使没有表单字段,Laravel 也会显示验证错误?

Laravel 5.2 在同一页面上登录和注册表单