首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel-5.5:为什么我的验证器代码不工作?

Laravel-5.5:为什么我的验证器代码不工作?
EN

Stack Overflow用户
提问于 2018-01-09 16:17:07
回答 2查看 96关注 0票数 2

我有一个简单的功能来检查发件人的电子邮件。

代码语言:javascript
复制
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());
}

为什么不使用这个代码呢?我只需要检查发件人的电子邮件与认证用户的电子邮件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-09 16:33:10

您不需要在DB中进行查询,因为auth()->user()对象已经加载。因此,您可以使用In规则:

代码语言:javascript
复制
'sender' => [
        'required',
        Rule::in([auth()->user()->email]),
    ],
],
票数 2
EN

Stack Overflow用户

发布于 2018-01-09 16:32:10

我认为您必须创建一个用于验证的规则类,例如:

代码语言:javascript
复制
php artisan make:rule TestUserRule

并在这个类中实现了两个方法: class ($attribute,$value)和message方法。

例如:

代码语言:javascript
复制
public function passes($attribute,$value){

      //write your conditions here you must return boolean value here
      return User::where('email',Auth::user()->email)->count();
}

或者,您可以使用laravel默认存在验证规则

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48163908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档