Laravel-5.5:为什么我的验证器代码不起作用?
Laravel-5.5: Why does not work my validator code?
我有简单的检查发件人邮箱的功能。
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
protected function validator(array $data)
{
return Validator::make($data, [
'recipient' => 'required|email|exists:users,email',
'sender' => [
'required',
Rule::exists('users')->where(function ($query) {
$query->where('email', Auth::user()->email);
}),
],
], $this->validator_messages());
}
为什么不能运行此代码?我只需要使用授权用户电子邮件检查发件人电子邮件。
我认为您必须创建一个规则 class 用于验证,例如:
php artisan make:rule TestUserRule
并在此 class 中实现 2 个方法:pass($attribute, $value) 和 message 方法。
例如:
public function passes($attribute,$value){
//write your conditions here you must return boolean value here
return User::where('email',Auth::user()->email)->count();
}
或者你可以使用laravel默认存在验证规则
您不需要在数据库中进行查询,因为 auth()->user()
对象已经加载。因此,您可以使用 In
规则:
'sender' => [
'required',
Rule::in([auth()->user()->email]),
],
],
我有简单的检查发件人邮箱的功能。
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
protected function validator(array $data)
{
return Validator::make($data, [
'recipient' => 'required|email|exists:users,email',
'sender' => [
'required',
Rule::exists('users')->where(function ($query) {
$query->where('email', Auth::user()->email);
}),
],
], $this->validator_messages());
}
为什么不能运行此代码?我只需要使用授权用户电子邮件检查发件人电子邮件。
我认为您必须创建一个规则 class 用于验证,例如:
php artisan make:rule TestUserRule
并在此 class 中实现 2 个方法:pass($attribute, $value) 和 message 方法。
例如:
public function passes($attribute,$value){
//write your conditions here you must return boolean value here
return User::where('email',Auth::user()->email)->count();
}
或者你可以使用laravel默认存在验证规则
您不需要在数据库中进行查询,因为 auth()->user()
对象已经加载。因此,您可以使用 In
规则:
'sender' => [
'required',
Rule::in([auth()->user()->email]),
],
],