1

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

<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内部app文件夹
  2. 编写以下代码:

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

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

    <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我有一个错误

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

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

4

1 回答 1

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') !!}
于 2016-03-17T03:11:47.050 回答