在输入字段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......
此代码完美无缺。但我必须在每个输入框中编写几乎相同的代码。所以,我计划制作一个显示错误的全局函数。为此,我做了以下几点。
helpers.php
文件夹app
编写以下代码:
function isError($name){
if($errors->has($name)){
return '<span class="help-block"><strong>'.$errors->first($name).'</strong></span>';
}
}
运行composer dump-autoload
以这种方式在刀片文件中使用它:
<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
,我只是从刀片文件中粘贴了该代码。
答案 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') !!}