【发布时间】:2017-04-03 16:59:13
【问题描述】:
我正在使用 Laravel 5.3。我的第一个 Laravel 项目/学习经历 在我的刀片文件中,我使用以下 sn-p 在 PUT 或 POST 请求后显示字段下方的错误。
在这种情况下,数据库字段称为 firstName
@if ($errors->has('firstName'))
<span class="help-block">
<strong>{{ $errors->first('firstName') }}</strong>
</span>
@endif
现在因为我有很多字段,所以我一直在为每个字段重复这个块。我在 Blade 模板(扩展 Blade 部分)上查找了 Laravel 文档,并认为我可以在 AppServiceProvider 类(AppServiceProvider .php)中执行以下操作
public function boot()
{
//
Blade::directive('showIfError', function($fieldName) {
if ($errors->has('$fieldName')) {
echo "<span class='help-block'>
<strong> $errors->first('$fieldName') </strong>
</span>";
}
});
}
然后使用
@showIfError('firstName')
但没有运气...我收到错误“未定义的变量:错误”
在此视图文件中似乎无法访问 Laravel 错误集合。
感谢任何帮助。谢谢。
【问题讨论】:
-
能否请您包括您想要实现的目标?
-
我不想复制并粘贴表单中每个字段的 if (errors...) 块。相反,我想要一个像 @showIfError('fieldName') 这样的宏/刀片模板,最终输出将像上面给出的 span 块一样呈现。
-
我发现视图缓存干扰了输出。如果我删除存储(缓存)文件夹中的所有文件,我可以使用 session('errors') 让它工作,但它只能工作一次!再次提交相同错误的表单不会产生任何输出!因此,我无法完全测试任何答案是否有效:-( 此外 Blade::directive 函数不接受 2 个参数。
标签: php laravel templates blade