Laravel 5 自定义验证
Laravel 5 custom validation
我是 Laravel 5 的初学者。基本上我有两个表,用户和团队表。我使用了内置的寄存器功能并对其进行了更改。在用户注册之前,他必须知道他所属的团队名称(下拉列表)以及团队代码。如果团队代码与他选择的团队名称不匹配,它只会显示验证错误。我应该如何在团队代码的验证规则中引用输入(团队名称)?我听说过 exists 验证规则,但我认为自定义规则是正确的。
在我的 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 子句的扩展格式的 exists 验证器,并传递您的 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
是否存在于团队 table 的一行中,其中 team_id
与作为输入给出的 ID 相匹配。
您可以使用自定义验证器,但我认为它不会给您的应用程序增加太多——这实际上并不是特定于您的应用程序的可重复使用的逻辑片段。任何自定义验证器仍然需要您将用户的 team_id
附加到验证字符串,这不是一个完全干净的方法。
您甚至可以考虑将此类特定于应用程序的逻辑检查移到验证器之后 - 验证器的目的似乎主要是针对某些静态条件检查输入以检查其是否正常。在提供的验证器中不会发生很多数据库交互,只有 exists
和 unique
。
我是 Laravel 5 的初学者。基本上我有两个表,用户和团队表。我使用了内置的寄存器功能并对其进行了更改。在用户注册之前,他必须知道他所属的团队名称(下拉列表)以及团队代码。如果团队代码与他选择的团队名称不匹配,它只会显示验证错误。我应该如何在团队代码的验证规则中引用输入(团队名称)?我听说过 exists 验证规则,但我认为自定义规则是正确的。
在我的 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 子句的扩展格式的 exists 验证器,并传递您的 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
是否存在于团队 table 的一行中,其中 team_id
与作为输入给出的 ID 相匹配。
您可以使用自定义验证器,但我认为它不会给您的应用程序增加太多——这实际上并不是特定于您的应用程序的可重复使用的逻辑片段。任何自定义验证器仍然需要您将用户的 team_id
附加到验证字符串,这不是一个完全干净的方法。
您甚至可以考虑将此类特定于应用程序的逻辑检查移到验证器之后 - 验证器的目的似乎主要是针对某些静态条件检查输入以检查其是否正常。在提供的验证器中不会发生很多数据库交互,只有 exists
和 unique
。