我想使用邀请码在我的网站上注册,所以我在控制器的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行
所以我不知道问题出在哪里,请帮忙
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);
希望这会有所帮助。