【问题标题】:Use Validator on another controller laravel在另一个控制器 laravel 上使用验证器
【发布时间】:2020-04-11 13:38:07
【问题描述】:

要在登录页面上对我进行身份验证,黄麻需要电子邮件和密码,如下所示:

(注册控制器)

 protected function validator(array $data)
    {
        return Validator::make($data, [
           // 'NOM' => ['required', 'string', 'max:50'],
           // 'PRENOM' => ['required', 'string', 'max:50'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:PERSONNELS'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

为避免注册页面超载,我只要求用户填写四个字段:名字、姓氏、电子邮件和密码。

我创建了 UserEdit 视图以完成和/或更新个人资料:Rue、CP、Ville(街道、邮政编码、城市)。

在我的 UserController 上,我使用 update function。像这样:

 public function update(Request $request, $id)
    {
        $details = \App\User::find($id);
        if ($request->input('password')==$request->input('password-confirm') && $request->input('password')!='' && $request->input('password-confirm')!='') {
            $details->password = $request->input('password');
            $details->password = Hash::make($details['password']);
        }
        else{
            return redirect()->action('UserController@edit', $id)->withErrors('Mot de passe diférents');
        }

        $membre = auth()->user();

        $details->MATRICULE = $request->input('MATRICULE');
        $details->NOM = $request->input('NOM');
        $details->PRENOM = $request->input('PRENOM');
        $details->RUE = $request->input('RUE');
        $details->CP = $request->input('CP');
        $details->VILLE = $request->input('VILLE');
        $details->email = $request->input('email');

        // $details->id_membre = $membre->id_membre;

        $details->save();
        return redirect()->route('user.edit', $id);
    }

我不明白如何将验证器放在这个函数上,它就像一个继承类?我想我还会遇到另一个问题:如果用户决定不更改任何很有可能的信息,那么唯一属性将阻止我更新表中的数据。

由于我的循环,如果密码必须超过 8 个字符但接受 0 是否可能?

谢谢!

Ps 我没有使用 Matricule,因为它取决于管理员角色。

【问题讨论】:

  • 天哪,对不起,我是哑巴,我忘了'必需'

标签: php laravel authentication


【解决方案1】:

请参阅 Laravel 文档,了解如何在控制器方法中使用验证器:https://laravel.com/docs/6.x/validation#manually-creating-validators

最终你需要在控制器方法中声明你的验证。如果您为验证创建了一个受保护的函数,那么您可以在同一个控制器的方法中调用它。

问题是,由于它受到保护,您将无法在其他控制器中使用它。不过这很好,您不希望以这样的方式将控制器相互耦合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2021-11-30
    • 2016-08-03
    • 2018-06-16
    • 2013-02-15
    相关资源
    最近更新 更多