如果表单输入与使用Laravel的auth(5.3)的接受值不匹配,则阻止注册

时间:2017-01-09 03:17:50

标签: php mysql laravel

我有这个reference_id变量,我想在我的网站上禁止注册。基本上,如果你没有输入一个正确匹配列表(~5-10)值中的一个值的reference_id,那么我想把它们转走。与您如何仅将TEST放入电子邮件字段中的情况类似,它会阻止您并说“嘿,这不是有效的电子邮件!”#。

我将这个逻辑放在哪里?我已经粘贴了我的RegisterController,因为我认为它应该与电子邮件逻辑一起发布。我可以轻松地创建一个变量并执行类似

的操作
$rfid=reference_id
$list=array(list)
if ($rfid==$list) {
     allow
}
else {
     reject
}

但是正如你所知道的那样,我不确定它是如何正常工作的,或者把它放在其余的代码中。任何方向都将不胜感激!

RegisterController:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'reference_id' => 'max:255',

    ]);
}

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return User
 */
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'reference_id' => $data['reference_id'],
    ]);
}

2 个答案:

答案 0 :(得分:0)

使用in验证规则。此规则的优点是它独立于源且与格式无关:

$allowedValues = implode(',', config('my.allowedKeys'));
// Or:
$allowedValues = implode(',', Reference::pluck('id')->toArray());
....
'reference_id' => 'max:255|in:'.$allowedValues,

如果您愿意,还可以为此规则添加custom validation message

答案 1 :(得分:0)

如果表格中存在reference_id,您可以使用

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'reference_id' => 'max:255|exists:table_name',

    ]);
}

如果有阵列

使用in_array:$array_name进行验证

正确理解可用的Laravel验证规则请参阅: https://laravel.com/docs/5.3/validation#rule-exists

希望这有助于你......

如果有任何查询,请告诉我。