Php Laravel-5.5:为什么我的验证器代码不工作?
我有检查发件人电子邮件的简单功能Php Laravel-5.5:为什么我的验证器代码不工作?,php,laravel,laravel-5.5,Php,Laravel,Laravel 5.5,我有检查发件人电子邮件的简单功能 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) {
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());
}
为什么不使用此代码?我只需要用auth user email检查发件人电子邮件。我认为您必须创建一个规则类进行验证,例如:
php artisan make:rule TestUserRule
public function passes($attribute,$value){
//write your conditions here you must return boolean value here
return User::where('email',Auth::user()->email)->count();
}
在这个类中实现了2个方法:passes($attribute,$value)和message方法
例如:
php artisan make:rule TestUserRule
public function passes($attribute,$value){
//write your conditions here you must return boolean value here
return User::where('email',Auth::user()->email)->count();
}
或者您可以使用laravel default exists验证规则您不需要在DB中进行查询,因为已经加载了
auth()->user()
对象。因此,您可以使用规则中的:
'sender' => [
'required',
Rule::in([auth()->user()->email]),
],
],
错误说明了什么?常量表达式包含无效操作
为什么要这样做$query=new users如果删除Rule::exists('users')->where(function($query=new User){$query->where('email',Auth::User()->email);}),会发生什么?您不需要实例化($query=new User)
先尝试($query)
。。我认为存在('users')
将已经知道$query应该在哪里执行。发件人
存档的电子邮件必须与身份验证用户电子邮件等效。我如何做到这一点?@MaxNet如果您想检查来自表单的电子邮件是否等于经过身份验证的用户电子邮件,您可以使用我所示的
规则中的。如果此代码正确,那么如果电子邮件与身份验证电子邮件不等效,我必须在验证程序消息中写入什么内容。例如sosender.exists
或其他?@MaxNetsender.in
我猜是吧。谢谢@Alexey Mezenin