在laravel中,当一个新用户注册到我的网站时,他们使用的电子邮件已存在于数据库中.怎么能告诉用户电子邮件已经存在?我是laravel框架的新手.示例代码也不错.
Ed *_*nds 37
Laravel内置的验证功能允许您检查许多内容,包括数据库中是否已存在值.这是您需要的过度简化版本.实际上,您可能希望使用表单重定向回视图并显示一些错误消息.
// Get the value from the form
$input['email'] = Input::get('email');
// Must not already exist in the `email` column of `users` table
$rules = array('email' => 'unique:users,email');
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
echo 'That email address is already registered. You sure you don\'t have an account?';
}
else {
// Register the new user or whatever.
}
Run Code Online (Sandbox Code Playgroud)
);
Laravel具有内置的人类可读错误消息,可用于所有验证.您可以通过以下方式获取这些消息的数组:$validator->messages();
您可以在Laravel Docs中了解有关验证的更多信息以及您可以使用它做些什么.
小智 7
if(sizeof(Users::where('email','=',Input::get('email'))->get()) > 0) return 'Error : User email exists';
Run Code Online (Sandbox Code Playgroud)
唯一规则的基本用法
'email' => 'unique:users'
Run Code Online (Sandbox Code Playgroud)
指定自定义列名称
'email' => 'unique:users,email_address'
Run Code Online (Sandbox Code Playgroud)
强制唯一规则忽略给定ID
'email' => 'unique:users,email_address,10'
Run Code Online (Sandbox Code Playgroud)
添加其他Where子句
您还可以指定将添加为查询的"where"子句的更多条件:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
Run Code Online (Sandbox Code Playgroud)
以上内容来自Laravel的文档
你可以添加:
public static $rules = [
'email' => 'unique:users,email'
];
Run Code Online (Sandbox Code Playgroud)
您可以在$规则中添加更多规则,例如:
public static $rules = [
'email' => 'required|unique:users,email'
];
Run Code Online (Sandbox Code Playgroud)
它会自动生成错误消息
并添加:
public static function isValid($data)
{
$validation = Validator::make($data, static::$rules);
if ($validation->passes())
{
return true;
}
static::$errors = $validation->messages();
return false;
}
Run Code Online (Sandbox Code Playgroud)
到模型User.php
然后在您用于注册的函数中,您可以添加:
if ( ! User::isValid(Input::all()))
{
return Redirect::back()->withInput()->withErrors(User::$errors);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32741 次 |
最近记录: |