我是Laravel 5的初学者。基本上,我有两个表,users和teams表。我使用了内置的寄存器功能并对其进行了更改。在用户注册之前,他必须知道他所属的团队名称(下拉列表)以及团队代码。如果团队代码与他选择的团队名称不匹配,它将仅显示验证错误。我应该如何在团队代码的验证规则中引用输入(团队名称)?我听说过存在验证规则,但是我认为使用自定义规则是正确的。
在我的registrar.php中:
public function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:255',
'password' => 'required|confirmed|min:6',
'firstname' => 'required|max:255',
'lastname' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'team_id' => 'required',
// 'team_code' => don't know what to put here.
]);
}
我用Google搜索了Laravel的自定义验证,似乎还不足以让我了解它是如何工作的。有人可以帮我吗?非常感谢您的帮助!
您可以使用具有允许where子句的扩展格式的存在验证器,并传递team_id
来确保id和代码存在于同一行中:
'email' => 'required|email|max:255|unique:users',
'team_id' => 'required',
'team_code' => 'exists:teams,code,team_id,' . Input::get('team_id')
这将检查team_code
teams表中存在的行,其中该行team_id
与输入的给定ID相匹配。
您可以使用自定义验证器,但我认为它不会对您的应用程序增加太多-这实际上不是将要重用的特定于您的应用程序的逻辑。任何自定义验证器仍将要求您将team_id
用户的追加到验证字符串,这不是一种完全干净的方法。
您甚至可以考虑将这种类型的特定于应用程序的逻辑检查移到验证器之后-似乎验证器的意图主要是根据某些静态条件检查输入,以检查输入是否合理。在提供的验证器中,只有exists
和可以进行大量的数据库交互unique
。
来源:文档
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句