我正在使用Laravel 5.4和Teamwork模块:
https://github.com/mpociot/teamwork
该模块设置为向用户(即已经拥有帐户的人)发送邀请以加入邀请者。我想邀请尚未拥有帐户的潜在用户,允许他们创建一个帐户并一步加入团队。
这是Teamwork AuthController中的当前acceptInvite函数:
{{ MyStaticClass.getData() }}
所以我将其更改为重定向到注册页面而不是登录页面。然后这是RegisterController中的create函数:
public function acceptInvite($token)
{
$invite = Teamwork::getInviteFromAcceptToken($token);
if (!$invite) {
abort(404);
}
if (auth()->check()) {
Teamwork::acceptInvite($invite);
return redirect()->route('teams.index');
} else {
session(['invite_token' => $token]);
return redirect()->to('login');
}
}
上面代码中的Debugbar :: info($ invite)在调试栏中产生了这个:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$id= $user->id; // Get current user id
$token = session('invite_token');
$invite = Teamwork::getInviteFromAcceptToken($token);
Debugbar::info($invite);
if ($invite) {
return $user;
Teamwork::acceptInvite($invite);
} else {
//create a team
...
}
}
但不接受邀请。我知道如果($ invite)正在工作,因为没有创建新团队。我在这里做错了什么?
答案 0 :(得分:1)
在致电return $user
之前,您正在制作Teamwork::acceptInvite($invite)
。交换这一行,它应该工作:
if ($invite) {
Teamwork::acceptInvite($invite);
return $user;
} else {
//create a team
...
}
在函数内调用return
将结束其执行。有关详情,请参阅PHP manual。
如果在交换此行后,您会收到下一个错误:
FatalThrowableError Call to a member function attachTeam() on null
可能是因为您在用户通过身份验证之前尝试接受邀请。
您可以在调用Teamwork::acceptInvite($invite)
之前尝试对其进行身份验证:
if ($invite) {
Auth::attempt([
'email' => $data['email'],
'password' => $data['password']
]);
Teamwork::acceptInvite($invite);
return $user;
} else {
//create a team
...
}
答案 1 :(得分:0)
if ($invite) {
Teamwork::acceptInvite($invite);
return $user;
}