php - 如何检查具有变量名的错误包
问题描述
在 Laravel(5.0 版,因为服务器兼容性)中,我可以使用命名错误包将错误发送回视图上的表单,其中同一视图中有多个表单(例如登录表单和注册表单)。例如,我会这样做:
控制器
public function login(Request $request)
{
$rules = [
'email' => 'required|email',
'password' => 'required'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator, 'loginForm');
}
// do something if validation was succesful
}
查看(在登录表单下添加)
@if ($errors->hasBag('loginForm'))
<ul class="fa-ul">
@foreach ($errors->loginForm->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
当我这样做时,一切都很好。但是,现在我需要对不知道消息包名称的视图执行相同的操作。这是一个视图,我在其中显示数据库中的所有项目,每个项目都需要一个表单。(是的,在我的情况下有必要这样做)。
特别是,前面提到的控制器和视图看起来更像这样:
控制器
public function login(Request $request, $formId)
{
$rules = [
'email' => 'required|email',
'password' => 'required'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator, $formId);
}
// do something if validation was succesful
}
查看(在每个表单下添加这个,表单是用@foreach()
循环创建的)
@if ($errors->hasBag($formId))
<ul class="fa-ul">
@foreach ($errors->$formId->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
在这里,$errors->hasBag($formId)
工作得很好,但$errors->$formId->all()
没有,所以我的问题是:有没有办法做到这一点?
更新 1
dump($errors->getBags())
给出(错误是荷兰语):
因此袋子存在。
更新 2
现在它起作用了,但我不知道是什么导致了问题......我改变的一件事是在包名称之前添加一个下划线,因为它们在哪里数字。
解决方案
经过一些测试,我发现问题在于我使用数字(id)作为消息包的名称。通过在每个名称前添加下划线 ( ) 解决了这个问题,_
这样它就成为了一个合法的变量名。
推荐阅读
- objective-c - ScrollView 正在吃 Swipe Gesture Recognizer
- scala - 当数据流中没有数据时,不会触发 Spark 滑动窗口
- javascript - Firebase 避免多个客户端(网络)覆盖/更新相同的节点
- r - 窗口长度> 1的rollsumr:填充缺失值
- php - 将列从一个表复制到另一个表并从输入表单添加新列
- amazon-s3 - Nuxeo:使用预签名 URL 上传
- string - 如何使用单个命令在 Dockerfile 中输出多行字符串
- android - 通过 http Wap 推送消息
- node.js - 如何在 react-native 中安装 wsdl 连接
- c# - 刷新后保持组件状态