将 Form::text 和错误检查合二为一?

Combine Form::text and error check into one?

在 blade 视图文件中,我有这样的东西:

  {{ Form::text('contact_name', null, ['class' => 'form-control']) }}
    @if ($errors->has('contact_name')) 
        <div class="error-block">{{ $errors->first('contact_name') }}</div>
    @endif


    {{ Form::text('contact_email', null, ['class' => 'form-control']) }}
    @if ($errors->has('contact_email')) 
        <div class="error-block">{{ $errors->first('contact_email') }}</div>
    @endif

当用户按下提交时,它将检查控制器中的输入验证。但是,如果验证出现错误,它将重定向回表单并使用错误消息填充它 {{ $errors->first() }}

有没有办法在视图文件中排除 {{ $errors->first() }} 并且在验证失败时仍然显示错误消息?那么将 Form::text$errors->has 组合成一个函数或类似的东西?

使用 Form Macro 来做到这一点

Form::macro('myText', function($field)
{
    $string = Form::text($field, null, ['class' => 'form-control']);
    if ($errors->has($field)) {
         $string .= $errors->first($field);
    }

    return $string;
});

那么在你看来

{{ Form::myText('contact_email') }}