参数1传递给Laravel 6

问题描述 投票:0回答:1

我想使用邀请码在我的网站上注册,所以我在控制器的If语句中添加了用于检查激活码的语句

 protected function create (array $data)
    {
        if ($data['activation_code'] === 'mypassword123') {
            return User::create([
                'name' => $data['name'],
                'lastname' => $data['lastname'],
                'email' => $data['email'],
                'password' => Hash::make($data['password']),
            ]);
        }
            return redirect('/register')->with('message', 'De activatiecode is onjuist');
        }

}

并且当我提交注册时出现此错误

传递给Illuminate \ Auth \ SessionGuard :: login()的参数1必须是Illuminate \ Contracts \ Auth \ Authenticatable的实例,给定的Illuminate \ Http \ RedirectResponse实例,在C:\ xampp \ htdocs \ Suppliers中调用\ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Auth \ RegistersUsers.php,第35行

所以我不知道问题出在哪里,请帮忙

laravel forms controller
1个回答
0
投票
[就像评论所说的protected function create (array $data)不负责重定向到另一个页面,我认为逻辑也不应该存在。

您可以从register覆盖trait RegistersUsers方法,也可以创建中间件。

    覆盖register方法,在RegisterController中在此处添加逻辑。
  • /** * Handle a registration request for the application. * * @return \Illuminate\Http\Response */ public function register(Request $request) { if ('mypassword123' !== $request->input('activation_code')) { return redirect('/register')->with('message', 'De activatiecode is onjuist'); } $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); $this->guard()->login($user); return $this->registered($request, $user) ?: redirect($this->redirectPath()); }
      中间件
  • <?php namespace App\Http\Middleware; use Closure; class CheckCode { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * * @return mixed */ public function handle($request, Closure $next) { if ('mypassword123' !== $request->input('activation_code')) { return redirect('/register')->with('message', 'De activatiecode is onjuist'); } return $next($request); } }
    然后在需要时添加它。

    use App\Http\Middleware\CheckAge; Route::get('someroutes', function () { //some code })->middleware(CheckCode::class);

    希望这会有所帮助。
  • © www.soinside.com 2019 - 2024. All rights reserved.