Laravel中URL传参并向Blade视图传递数据失败求助
问题解决:Redirect跳转后Blade无法获取传递的数据
一、修正Session数据传递的语法错误
你在redirect()->route()->with()里的写法存在语法问题,with()方法需要接收键值对格式的参数,当前的['email', $result['user']['email']]是索引数组,无法正确将数据存入Session。
错误写法:
return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email', $result['user']['email']]);
正确写法二选一:
- 分参数传递:
return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with('email', $result['user']['email']);
- 关联数组传递:
return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email' => $result['user']['email']]);
修正后,Blade中的{{ session()->get('email') }}就能正确读取Session里的邮箱数据。
二、获取URL中的参数
你已经在路由参数里传递了email,但Blade直接用$email ?? null无法获取,因为该变量未被传入视图。可以通过两种方式解决:
方式1:Blade中直接从请求获取
{{ request('email') ?? null }}
方式2:在路由对应控制器方法中接收并传入视图
假设login路由对应的控制器方法是showLoginForm,修改该方法:
public function showLoginForm(Request $request) { $email = $request->query('email'); return view('login', compact('email')); }
修改后,Blade里的{{ $email ?? null }}就能正常读取URL中的邮箱参数。
三、完整修正后的控制器代码片段
// ... 其他代码保持不变 return redirect()->route('login', ['error' => 0, 'stepIndex' => 2, 'formType' => 'login', 'email' => $result['user']['email']])->with(['email' => $result['user']['email']]);
四、Blade视图兼容两种获取方式
{{ session()->get('email') ?? request('email') ?? null }}
内容的提问来源于stack exchange,提问作者Gabriel Edu
相关产品推荐
相关产品推荐

