我很困惑为什么这里不能正常工作。在此控制器中,我要命中一个API端点,该端点成功后会给我一个令牌数组。在这里,我将其中一个令牌设置为accessToken变量,并尝试将其传递给视图,以在该处的另一个调用中使用
Controller.php
$initialLogin = $authService->initialLogin($newPhone,$request->temp_password,$request->email,$request->password_confirmation);
//this dump and die successfully dumps the token array, so I know I'm getting my tokens
dd($initialLogin);
//Here I'm setting the variable to one of the specific tokens
$accessToken = $initialLogin->auth_access_token;
//Now I'm redirecting to a view, which I'm successfully shown
return redirect(route('auth.phone'))->with('accessToken',$accessToken);
该过程完成后,在测试了确实显示了令牌的转储和死亡之后,它成功地将我重定向到视图。这里的问题是,在视图上转储变量时,它显示为空
view.php
<?php dd($accessToken)?>
这是怎么回事?我可以验证在控制器中转储$initialLogin
是否显示了令牌,并且可以验证$accessToken
是否已设置为所需的特定令牌,那么为什么传递不正确?
答案 0 :(得分:1)
IIRC,当使用with
时,会创建一个会话变量,因此,请进行以下更改:
更改
return redirect(route('auth.phone'))->with('accessToken',$accessToken);
收件人
return redirect(route('auth.phone', ['accessToken' => $accessToken]));
这样,您实际上是将变量传递给视图。 或者,如果您想继续使用with
,请使用会话助手(session('accessToken')
)访问令牌。
答案 1 :(得分:1)
当您使用with帮助程序进行重定向时,laravel会在用户会话中而不是在视图中设置变量
尝试一下
@if(session('accessToken'))
{{ session('accessToken') }}
@endif