创建帮助程序函数以显示验证错误

时间:2016-03-17 02:11:04

标签: laravel laravel-5.2 laravel-blade validationerror helper-functions

在输入字段I之后显示验证错误:

<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. helpers.php文件夹
  2. 中创建app
  3. 编写以下代码:

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

  5. 以这种方式在刀片文件中使用它:

    <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>
    
  6. 现在,当我转到create.blade.php时出现错误

      

    未定义的变量:错误(查看:D:\ xampp \ htdocs \ hms \ resources \ views \ guest \ create.blade.php)

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

1 个答案:

答案 0 :(得分:3)

问题是你的助手方法范围内未定义$errors变量。

通过将$errors对象传递给isError()辅助方法,可以轻松解决此问题。

辅助

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

刀片模板

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