【发布时间】:2018-12-17 08:52:15
【问题描述】:
我有一个方法:
protected function validateLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|string|exists:users,email,active,1,online,0',
'password' => 'required|string',
], [
'password.required' => 'Password required!',
'email.exists' => 'Email not found!',
]);
}
这验证了“用户”表中的数据库中存在具有特定电子邮件地址的用户,该用户处于活动状态且未登录。 'users' 表的架构如下:
Schema::create($this->table, function (Blueprint $table) {
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email')->unique();
$table->string('password');
$table->boolean('active')->default(true);
$table->boolean('online')->default(false);
$table->timestamps();
});
我想根据用户的状态(在线|活动)返回错误消息
你能告诉我我该怎么做吗? 我试过了:
protected function validateLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|string|exists:users,email,active,1,online,0',
'password' => 'required|string',
], [
'password.required' => 'Password required!',
'email.exists' => 'Email not found!',
'email.active' => 'User not active!',
'email.online' => 'Email is onlone!',
]);
}
【问题讨论】:
-
Laravel 中的验证并不是这样工作的;它验证发送到服务器的输入,而不是在数据库中找到的记录的值。除非
exists方法做一些不同的事情;从来没有真正使用过。 -
在
$this->validate中将$request替换为$request->all() -
类型错误:传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定数组...
-
Custom validation rules 可以使用。另见this question
-
我同意@TimLewis,验证适用于输入的数据,而不是数据库中的数据。
标签: laravel validation