创建用于显示验证错误的辅助函数

Create helpers function for displaying validation errors

要在我使用的输入字段后显示验证错误:

<div class="form-group">
    {!! Html::decode(Form::label('first_name','First Name:<span class="required">*</span>',['class'=>'control-label col-sm-3'])) !!}
    <div class="col-sm-6">
        {!! Form::text('first_name',null,['class'=>'form-control']) !!}
        @if ($errors->has('first_name'))
            <span class="help-block">
                <strong>{{ $errors->first('first_name') }}</strong>
            </span>
        @endif
    </div>
</div>
<div class="form-group">
    {!! Html::decode(Form::label('last_name','Last Name:<span class="required">*</span>',['class'=>'control-label col-sm-3'])) !!}
    <div class="col-sm-6">
        {!! Form::text('last_name',null,['class'=>'form-control']) !!}
        @if ($errors->has('last_name'))
            <span class="help-block">
                <strong>{{ $errors->first('last_name') }}</strong>
            </span>
        @endif
    </div>
</div>
// and so on......

此代码完美运行。但是我必须在每个输入框中编写几乎相同的代码。所以,我打算做一个全局函数来显示错误。为此,我做了以下工作。

  1. app 文件夹中创建一个 helpers.php
  2. 编写如下代码:

    function isError($name){
        if($errors->has($name)){
            return '<span class="help-block"><strong>'.$errors->first($name).'</strong></span>';
        }
    }
    
  3. 运行 composer dump-autoload

  4. 以这种方式在 blade 文件中使用它:

    <div class="form-group">
        {!! Html::decode(Form::label('first_name','First Name:<span class="required">*</span>',['class'=>'control-label col-sm-3'])) !!}
        <div class="col-sm-6">
            {!! Form::text('first_name',null,['class'=>'form-control']) !!}
            {{ isError('first_name') }}
        </div>
    </div>
    <div class="form-group">
        {!! Html::decode(Form::label('last_name','Last Name:<span class="required">*</span>',['class'=>'control-label col-sm-3'])) !!}
        <div class="col-sm-6">
            {!! Form::text('last_name',null,['class'=>'form-control']) !!}
            {{ isError('last_name') }}
        </div>
    </div>
    

现在,当我转到 create.blade.php 时出现错误

Undefined variable: errors (View: D:\xampp\htdocs\hms\resources\views\guest\create.blade.php)

我知道问题出在 helpers.php 中,因为我没有定义 $errors,我只是从 blade 文件中粘贴代码。

问题是 $errors 变量在您的辅助方法范围内未定义。

这可以通过将 $errors object 传递给 isError() 辅助方法来轻松解决。

帮手

function isError($errors, $name){
    if($errors->has($name)){
        return '<span class="help-block"><strong>'.$errors->first($name).'</strong></span>';
    }
}

Blade 模板

{!! isError($errors, 'first_name') !!}